ir_value_set_string needs to use a strdup which doesn't return NULL for an emptystring

This commit is contained in:
Wolfgang (Blub) Bumiller 2012-08-19 20:35:51 +02:00
parent c12e60a510
commit af3d9e0bdf
2 changed files with 13 additions and 2 deletions

13
ir.c
View file

@ -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;
}

View file

@ -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 */