projects
/
pspp
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
SORT VARIABLES: Improve error messages.
[pspp]
/
src
/
libpspp
/
string-map.c
diff --git
a/src/libpspp/string-map.c
b/src/libpspp/string-map.c
index edbd39e92488eb0fba985413ccfda9d1350da15c..670154fc5df63cd753d48a1d86d3da217ef89a8d 100644
(file)
--- 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 "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,
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;
}
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. */
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)
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;
}
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)
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;
else
string_map_node_set_value (node, value);
return node;