p = g_hash_table_lookup(self->names, GUINT_TO_POINTER(name));
if(p == NULL) return LTTV_NONE;
- i = POINTER_TO_GUINT(p);
+ i = GPOINTER_TO_UINT(p);
i--;
a = &g_array_index(self->attributes, Attribute, i);
*v = address_of_value(a->type, &(a->value));
/* The element used to replace the removed element has its index entry
all wrong now. Reinsert it with its new position. */
- g_hash_table_remove(self->names, GUINT_TO_POINTER(a->name));
- g_hash_table_insert(self->names, GUINT_TO_POINTER(a->name), GUINT_TO_POINTER(i + 1));
+ if(self->attributes->len != i){
+ g_hash_table_remove(self->names, GUINT_TO_POINTER(a->name));
+ g_hash_table_insert(self->names, GUINT_TO_POINTER(a->name), GUINT_TO_POINTER(i + 1));
+ }
}
void
static void
attribute_finalize (LttvAttribute *self)
{
- g_hash_table_free(self->names);
+ g_hash_table_destroy(self->names);
g_array_free(self->attributes, TRUE);
G_OBJECT_CLASS(g_type_class_peek_parent(LTTV_ATTRIBUTE_GET_CLASS(self)))->finalize(G_OBJECT(self));
}