From: Wolfgang (Blub) Bumiller Date: Sun, 19 Aug 2012 18:35:51 +0000 (+0200) Subject: ir_value_set_string needs to use a strdup which doesn't return NULL for an emptystring X-Git-Tag: 0.1-rc1~144 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=af3d9e0bdfc6a04922664d391f28211ef36cd933;p=xonotic%2Fgmqcc.git ir_value_set_string needs to use a strdup which doesn't return NULL for an emptystring --- diff --git a/ir.c b/ir.c index 0a6a8da..37ce2b0 100644 --- a/ir.c +++ b/ir.c @@ -749,11 +749,22 @@ bool ir_value_set_field(ir_value *self, ir_value *fld) return true; } +static char *ir_strdup(const char *str) +{ + if (str && !*str) { + /* actually dup empty strings */ + char *out = mem_a(1); + *out = 0; + return out; + } + return util_strdup(str); +} + bool ir_value_set_string(ir_value *self, const char *str) { if (self->vtype != TYPE_STRING) return false; - self->constval.vstring = util_strdup(str); + self->constval.vstring = ir_strdup(str); self->isconst = true; return true; } diff --git a/parser.c b/parser.c index 06f6d7a..109091d 100644 --- a/parser.c +++ b/parser.c @@ -174,7 +174,7 @@ ast_value* parser_const_float_0(parser_t *parser) return parser->imm_float_zero; } -char *parser_strdup(const char *str) +static char *parser_strdup(const char *str) { if (str && !*str) { /* actually dup empty strings */