From af3d9e0bdfc6a04922664d391f28211ef36cd933 Mon Sep 17 00:00:00 2001 From: "Wolfgang (Blub) Bumiller" Date: Sun, 19 Aug 2012 20:35:51 +0200 Subject: [PATCH] ir_value_set_string needs to use a strdup which doesn't return NULL for an emptystring --- ir.c | 13 ++++++++++++- parser.c | 2 +- 2 files changed, 13 insertions(+), 2 deletions(-) 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 */ -- 2.39.2