From: Wolfgang (Blub) Bumiller <blub@speed.at>
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 */