X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flibpspp%2Fstring-map.c;h=670154fc5df63cd753d48a1d86d3da217ef89a8d;hb=d8b3292a8c12564dbc67e59f24d626dcfbf2e274;hp=edbd39e92488eb0fba985413ccfda9d1350da15c;hpb=672c9b7e1c60763d279ecc781b7bf939b8bab4b4;p=pspp diff --git a/src/libpspp/string-map.c b/src/libpspp/string-map.c index edbd39e924..670154fc5d 100644 --- a/src/libpspp/string-map.c +++ b/src/libpspp/string-map.c @@ -25,6 +25,7 @@ #include "libpspp/string-set.h" #include "gl/xalloc.h" +#include "gl/xmemdup0.h" static struct string_map_node *string_map_find_node_with_hash ( const struct string_map *, const char *key, size_t length, @@ -74,7 +75,7 @@ string_map_node_set_value_nocopy (struct string_map_node *node, char *value) node->value = value; } -/* Frees NODE and and its key and value. Ordinarily nodes are owned by +/* Frees NODE and its key and value. Ordinarily nodes are owned by string_maps, but this function should only be used by a caller that owns NODE, such as one that has called string_map_delete_nofree() for the node. */ @@ -199,7 +200,8 @@ string_map_insert (struct string_map *map, const char *key, const char *value) struct string_map_node *node = string_map_find_node_with_hash (map, key, length, hash); if (node == NULL) - node = string_map_insert__ (map, xstrdup (key), xstrdup (value), hash); + node = string_map_insert__ (map, xmemdup0 (key, length), xstrdup (value), + hash); return node; } @@ -235,7 +237,8 @@ string_map_replace (struct string_map *map, const char *key, const char *value) struct string_map_node *node = string_map_find_node_with_hash (map, key, length, hash); if (node == NULL) - node = string_map_insert__ (map, xstrdup (key), xstrdup (value), hash); + node = string_map_insert__ (map, xmemdup0 (key, length), + xstrdup (value), hash); else string_map_node_set_value (node, value); return node;