A
lgorithmique
N
umérique
D
istribuée
Public GIT Repository
projects
/
simgrid.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Use strtol instead of sscanf+sprintf for parsing and error checking.
[simgrid.git]
/
src
/
xbt
/
backtrace_linux.c
diff --git
a/src/xbt/backtrace_linux.c
b/src/xbt/backtrace_linux.c
index
9cfea87
..
e57e486
100644
(file)
--- a/
src/xbt/backtrace_linux.c
+++ b/
src/xbt/backtrace_linux.c
@@
-56,7
+56,7
@@
void xbt_ex_setup_backtrace(xbt_ex_t * e)
struct stat stat_buf;
char *binary_name = NULL;
struct stat stat_buf;
char *binary_name = NULL;
- xbt_assert
0
(e
+ xbt_assert(e
&& e->used,
"Backtrace not setup yet, cannot set it up for display");
&& e->used,
"Backtrace not setup yet, cannot set it up for display");
@@
-185,10
+185,8
@@
void xbt_ex_setup_backtrace(xbt_ex_t * e)
maps_name = bprintf("/proc/%d/maps", (int) getpid());
maps = fopen(maps_name, "r");
maps_name = bprintf("/proc/%d/maps", (int) getpid());
maps = fopen(maps_name, "r");
- sscanf(addrs[i], "%lx", &addr);
- sprintf(maps_buff, "%#lx", addr);
-
- if (strcmp(addrs[i], maps_buff)) {
+ addr = strtol(addrs[i], &p, 16);
+ if (*p != '\0') {
XBT_CRITICAL("Cannot parse backtrace address '%s' (addr=%#lx)",
addrs[i], addr);
}
XBT_CRITICAL("Cannot parse backtrace address '%s' (addr=%#lx)",
addrs[i], addr);
}