From 7551d0f37a19938a62eaf6aa90e48111c0f9e4a2 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Thu, 9 Jun 2011 01:56:10 -0400 Subject: [PATCH] Don't allocate zero bytes for MOJOSHADER_symbolTypeInfo::members. --- mojoshader.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/mojoshader.c b/mojoshader.c index dae3550b..8041677c 100644 --- a/mojoshader.c +++ b/mojoshader.c @@ -6940,13 +6940,17 @@ static int parse_ctab_typeinfo(Context *ctx, const uint8 *start, if ((pos + 16 + (info->member_count * 8)) >= bytes) return 0; // corrupt CTAB. - const size_t len = sizeof (MOJOSHADER_symbolStructMember) * - info->member_count; - - info->members = (MOJOSHADER_symbolStructMember *) Malloc(ctx, len); - if (info->members == NULL) - return 1; // we'll check ctx->out_of_memory later. - memset(info->members, '\0', len); + if (info->member_count == 0) + info->members = NULL; + else + { + const size_t len = sizeof (MOJOSHADER_symbolStructMember) * + info->member_count; + info->members = (MOJOSHADER_symbolStructMember *) Malloc(ctx, len); + if (info->members == NULL) + return 1; // we'll check ctx->out_of_memory later. + memset(info->members, '\0', len); + } // else int i; const uint32 *member = (const uint32 *)((const uint8 *) (&typeptr[6]));