diff --git a/mie/attribute/attribute-map.c b/mie/attribute/attribute-map.c index 1d6d4ba..b33e265 100644 --- a/mie/attribute/attribute-map.c +++ b/mie/attribute/attribute-map.c @@ -149,6 +149,7 @@ enum mie_status mie_attribute_map_put( struct attribute_map_entry *entry = get_entry(&map->m_entries, name_hash); struct attribute_map_item *item = NULL; struct attribute_map_bucket *bucket = NULL; + enum mie_status status = MIE_SUCCESS; if (!entry) { item = create_item(name, name_hash, value); @@ -162,6 +163,17 @@ enum mie_status mie_attribute_map_put( if (entry->e_type == ATTRMAP_ENTRY_ITEM) { item = (struct attribute_map_item *)entry; + if (!strcmp(item->i_name, name)) { + status = MIE_ERR_NAME_EXISTS; + + if (flags & MIE_ATTRMAP_F_REPLACE) { + item->i_value = value; + status = MIE_SUCCESS; + } + + return status; + } + bucket = convert_item_to_bucket(map, item); } else { bucket = (struct attribute_map_bucket *)entry;