fix segfault from previous cherry-pick

This commit is contained in:
Wolfgang Bumiller 2012-12-27 14:43:31 +01:00
parent cac827d763
commit e26d1e985a

23
ir.c
View file

@ -1021,16 +1021,22 @@ ir_value* ir_value_vector_member(ir_value *self, unsigned int member)
if (self->members[member])
return self->members[member];
len = strlen(self->name);
name = (char*)mem_a(len + 3);
memcpy(name, self->name, len);
name[len+0] = '_';
name[len+1] = 'x' + member;
name[len+2] = '\0';
if (self->name) {
len = strlen(self->name);
name = (char*)mem_a(len + 3);
memcpy(name, self->name, len);
name[len+0] = '_';
name[len+1] = 'x' + member;
name[len+2] = '\0';
}
else
name = NULL;
if (self->vtype == TYPE_VECTOR)
{
m = ir_value_var(name, self->store, TYPE_FLOAT);
mem_d(name);
if (name)
mem_d(name);
if (!m)
return NULL;
m->context = self->context;
@ -1043,7 +1049,8 @@ ir_value* ir_value_vector_member(ir_value *self, unsigned int member)
if (self->fieldtype != TYPE_VECTOR)
return NULL;
m = ir_value_var(name, self->store, TYPE_FIELD);
mem_d(name);
if (name)
mem_d(name);
if (!m)
return NULL;
m->fieldtype = TYPE_FLOAT;