1 |
douglas |
2 |
--- 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 |
|
|
} |