diff options
author | hunt <hunt> | 2007-01-10 15:07:25 +0000 |
---|---|---|
committer | hunt <hunt> | 2007-01-10 15:07:25 +0000 |
commit | 3c2a749a7ef6df845063867ff69b12276ba09800 (patch) | |
tree | 76ccc779ffa9e250d0f6995594677ba8144f1ec2 /runtime/map.c | |
parent | 4f723326777390f7ac0b949046e4adbf67a3f3cd (diff) | |
download | systemtap-steved-3c2a749a7ef6df845063867ff69b12276ba09800.tar.gz systemtap-steved-3c2a749a7ef6df845063867ff69b12276ba09800.tar.xz systemtap-steved-3c2a749a7ef6df845063867ff69b12276ba09800.zip |
2007-01-10 Martin Hunt <hunt@redhat.com>
PR 3708
* map.c (str_copy): Check for NULL pointers.
(_new_map_set_int64): Don't check val for 0.
(_new_map_set_str): Don't check val for NULL.
* map-gen.c (VAL_IS_ZERO): Removed.
(_stp_map_del): New.
(__stp_map_set): Don't check for zero.
* pmap-gen.c (VAL_IS_ZERO): Removed.
(_stp_pmap_del): New.
(__stp_pmap_set): Don't check for zero.
Diffstat (limited to 'runtime/map.c')
-rw-r--r-- | runtime/map.c | 33 |
1 files changed, 17 insertions, 16 deletions
diff --git a/runtime/map.c b/runtime/map.c index 843a8543..cb866ffe 100644 --- a/runtime/map.c +++ b/runtime/map.c @@ -39,10 +39,13 @@ int int64_eq_p (int64_t key1, int64_t key2) void str_copy(char *dest, char *src) { - int len = strlen(src); - if (len > MAP_STRING_LENGTH - 1) - len = MAP_STRING_LENGTH - 1; - memcpy (dest, src, len); + int len = 0; + if (src) { + len = strlen(src); + if (len > MAP_STRING_LENGTH - 1) + len = MAP_STRING_LENGTH - 1; + memcpy (dest, src, len); + } dest[len] = 0; } @@ -974,12 +977,11 @@ static int _new_map_set_int64 (MAP map, struct map_node *n, int64_t val, int add if (map == NULL || n == NULL) return -2; - if (val || map->list) { - if (add) - *(int64_t *)((long)n + map->data_offset) += val; - else - *(int64_t *)((long)n + map->data_offset) = val; - } + if (add) + *(int64_t *)((long)n + map->data_offset) += val; + else + *(int64_t *)((long)n + map->data_offset) = val; + return 0; } @@ -988,12 +990,11 @@ static int _new_map_set_str (MAP map, struct map_node *n, char *val, int add) if (map == NULL || n == NULL) return -2; - if ((val && *val)|| map->list) { - if (add) - str_add((void *)((long)n + map->data_offset), val); - else - str_copy((void *)((long)n + map->data_offset), val); - } + if (add) + str_add((void *)((long)n + map->data_offset), val); + else + str_copy((void *)((long)n + map->data_offset), val); + return 0; } |