summaryrefslogtreecommitdiffstats
path: root/runtime/map.c
diff options
context:
space:
mode:
authorhunt <hunt>2007-01-10 15:07:25 +0000
committerhunt <hunt>2007-01-10 15:07:25 +0000
commit3c2a749a7ef6df845063867ff69b12276ba09800 (patch)
tree76ccc779ffa9e250d0f6995594677ba8144f1ec2 /runtime/map.c
parent4f723326777390f7ac0b949046e4adbf67a3f3cd (diff)
downloadsystemtap-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.c33
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;
}