From: Ben Pfaff Date: Fri, 18 Jan 2019 05:35:05 +0000 (-0800) Subject: string-map: Avoid measuring the length of a string twice. X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?p=pspp;a=commitdiff_plain;h=891df28f6459596b862278ac38704900a0cd6087 string-map: Avoid measuring the length of a string twice. --- diff --git a/src/libpspp/string-map.c b/src/libpspp/string-map.c index edbd39e924..afa94b135f 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, @@ -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;