From: Wolfgang (Blub) Bumiller Date: Sat, 18 Aug 2012 10:26:21 +0000 (+0200) Subject: parser_strdup to wrap util_strdup and actually dup empty strings X-Git-Tag: 0.1-rc1~235 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=6b1a0541c91f4bf17793e82da036d093397a55fe;p=xonotic%2Fgmqcc.git parser_strdup to wrap util_strdup and actually dup empty strings --- diff --git a/parser.c b/parser.c index 91c43f4..89edf87 100644 --- a/parser.c +++ b/parser.c @@ -171,6 +171,17 @@ ast_value* parser_const_float_0(parser_t *parser) return parser->imm_float_zero; } +char *parser_strdup(const char *str) +{ + if (str && !*str) { + /* actually dup empty strings */ + char *out = mem_a(1); + *out = 0; + return out; + } + return util_strdup(str); +} + ast_value* parser_const_string(parser_t *parser, const char *str) { size_t i; @@ -181,7 +192,7 @@ ast_value* parser_const_string(parser_t *parser, const char *str) } out = ast_value_new(parser_ctx(parser), "#IMMEDIATE", TYPE_STRING); out->isconst = true; - out->constval.vstring = util_strdup(str); + out->constval.vstring = parser_strdup(str); if (!parser_t_imm_string_add(parser, out)) { ast_value_delete(out); return NULL;