1 |
--- execinfo.c.orig Sun Jul 18 22:21:09 2004 |
2 |
+++ execinfo.c Wed Feb 9 16:56:51 2005 |
3 |
@@ -78,7 +78,6 @@ |
4 |
rval = malloc(clen); |
5 |
if (rval == NULL) |
6 |
return NULL; |
7 |
- (char **)cp = &(rval[size]); |
8 |
for (i = 0; i < size; i++) { |
9 |
if (dladdr(buffer[i], &info) != 0) { |
10 |
if (info.dli_sname == NULL) |
11 |
@@ -92,14 +91,14 @@ |
12 |
2 + /* " <" */ |
13 |
strlen(info.dli_sname) + /* "function" */ |
14 |
1 + /* "+" */ |
15 |
- D10(offset) + /* "offset */ |
16 |
+ 10 + /* "offset */ |
17 |
5 + /* "> at " */ |
18 |
strlen(info.dli_fname) + /* "filename" */ |
19 |
1; /* "\0" */ |
20 |
rval = realloc_safe(rval, clen + alen); |
21 |
if (rval == NULL) |
22 |
return NULL; |
23 |
- snprintf(cp, alen, "%p <%s+%d> at %s", |
24 |
+ snprintf((char *) rval + clen, alen, "%p <%s+%d> at %s", |
25 |
buffer[i], info.dli_sname, offset, info.dli_fname); |
26 |
} else { |
27 |
alen = 2 + /* "0x" */ |
28 |
@@ -108,11 +107,14 @@ |
29 |
rval = realloc_safe(rval, clen + alen); |
30 |
if (rval == NULL) |
31 |
return NULL; |
32 |
- snprintf(cp, alen, "%p", buffer[i]); |
33 |
+ snprintf((char *) rval + clen, alen, "%p", buffer[i]); |
34 |
} |
35 |
- rval[i] = cp; |
36 |
- cp += alen; |
37 |
+ rval[i] = (char *) clen; |
38 |
+ clen += alen; |
39 |
} |
40 |
+ |
41 |
+ for (i = 0; i < size; i++) |
42 |
+ rval[i] += (int) rval; |
43 |
|
44 |
return rval; |
45 |
} |