summaryrefslogtreecommitdiffstats
path: root/runtime/map.c
diff options
context:
space:
mode:
authorJosh Stone <jistone@redhat.com>2009-03-26 09:20:16 -0700
committerJosh Stone <jistone@redhat.com>2009-03-26 11:00:25 -0700
commit4aa2079a01a62ff27cbe90f5eca38137035d34a8 (patch)
treec7f58c68f248f1e0a86e483390ae7500c0462edb /runtime/map.c
parentbc02f40984fede1c312ca33c0c3937b970e8da6d (diff)
downloadsystemtap-steved-4aa2079a01a62ff27cbe90f5eca38137035d34a8.tar.gz
systemtap-steved-4aa2079a01a62ff27cbe90f5eca38137035d34a8.tar.xz
systemtap-steved-4aa2079a01a62ff27cbe90f5eca38137035d34a8.zip
PR10001: Use the kernel's strlcpy & strlcat
We had our own implementations of these which were triggering gcc bug38480 in some particular cases. It's easier for us to use the kernel's strlcpy and strlcat anyway, which avoids the bug.
Diffstat (limited to 'runtime/map.c')
-rw-r--r--runtime/map.c21
1 files changed, 5 insertions, 16 deletions
diff --git a/runtime/map.c b/runtime/map.c
index de25d6f3..190ba91b 100644
--- a/runtime/map.c
+++ b/runtime/map.c
@@ -38,27 +38,16 @@ static int int64_eq_p (int64_t key1, int64_t key2)
static void str_copy(char *dest, char *src)
{
- 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;
+ if (src)
+ strlcpy(dest, src, MAP_STRING_LENGTH);
+ else
+ *dest = 0;
}
static void str_add(void *dest, char *val)
{
char *dst = (char *)dest;
- int len = strlen(val);
- int len1 = strlen(dst);
- int num = MAP_STRING_LENGTH - 1 - len1;
-
- if (len > num)
- len = num;
- memcpy (&dst[len1], val, len);
- dst[len + len1] = 0;
+ strlcat(dst, val, MAP_STRING_LENGTH);
}
static int str_eq_p (char *key1, char *key2)