summaryrefslogtreecommitdiff
path: root/util/romcc/romcc.c
diff options
context:
space:
mode:
Diffstat (limited to 'util/romcc/romcc.c')
-rw-r--r--util/romcc/romcc.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/util/romcc/romcc.c b/util/romcc/romcc.c
index bf0510a49f..b9ec835f6f 100644
--- a/util/romcc/romcc.c
+++ b/util/romcc/romcc.c
@@ -10782,6 +10782,15 @@ static struct triple *string_constant(struct compile_state *state)
} while(str < end);
type->elements = ptr - buf;
} while(peek(state) == TOK_LIT_STRING);
+
+ /* buf contains the allocated buffer for the string constant. However,
+ if buf is NULL, then the string constant is empty, but we still
+ need to allocate one byte for the null character. */
+ if (buf == NULL) {
+ buf = xmalloc(1, "string_constant");
+ ptr = buf;
+ }
+
*ptr = '\0';
type->elements += 1;
def = triple(state, OP_BLOBCONST, type, 0, 0);