From 6b1a0541c91f4bf17793e82da036d093397a55fe Mon Sep 17 00:00:00 2001 From: "Wolfgang (Blub) Bumiller" Date: Sat, 18 Aug 2012 12:26:21 +0200 Subject: [PATCH] parser_strdup to wrap util_strdup and actually dup empty strings --- parser.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) 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;