summaryrefslogtreecommitdiff
path: root/mem.c
diff options
context:
space:
mode:
authorDenys Vlasenko <dvlasenk@redhat.com>2011-08-31 14:00:02 +0200
committerDenys Vlasenko <dvlasenk@redhat.com>2011-08-31 14:00:02 +0200
commit1d46ba57a8ab16b353b531f2bbefe2ad7f354ca9 (patch)
tree110bb3a2706b013b97a903fcfae78fba69c3bba7 /mem.c
parent2fb4db3e7aa1d6ac6b4b43f47597197492a846dd (diff)
downloadstrace-1d46ba57a8ab16b353b531f2bbefe2ad7f354ca9.tar.gz
strace-1d46ba57a8ab16b353b531f2bbefe2ad7f354ca9.tar.bz2
strace-1d46ba57a8ab16b353b531f2bbefe2ad7f354ca9.tar.xz
Make out-of-memory handling more uniform
This fixes one real bug in dumpstr(). * defs.h: Declare die_out_of_memory(). * strace.c (die_out_of_memory): New function. (strace_popen): If allocation fails, call die_out_of_memory(). (main): Likewise. (expand_tcbtab): Likewise. (rebuild_pollv): Likewise. * count.c (count_syscall): Likewise. (call_summary_pers): Likewise. * desc.c (decode_select): Likewise. * file.c (sys_getdents): Likewise. (sys_getdents64): Likewise. (sys_getdirentries): Likewise. * pathtrace.c (pathtrace_match): Likewise. * syscall.c (qualify): Likewise. * util.c (printstr): Likewise. (dumpiov): Likewise. (dumpstr): Likewise. (fixvfork): Likewise. * mem.c (sys_mincore): Don't check free() parameter for NULL. Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
Diffstat (limited to 'mem.c')
-rw-r--r--mem.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/mem.c b/mem.c
index 763bea1..43b422f 100644
--- a/mem.c
+++ b/mem.c
@@ -564,12 +564,12 @@ sys_mctl(struct tcb *tcp)
int
sys_mincore(struct tcb *tcp)
{
- unsigned long i, len;
- char *vec = NULL;
-
if (entering(tcp)) {
tprintf("%#lx, %lu, ", tcp->u_arg[0], tcp->u_arg[1]);
} else {
+ unsigned long i, len;
+ char *vec = NULL;
+
len = tcp->u_arg[1];
if (syserror(tcp) || tcp->u_arg[2] == 0 ||
(vec = malloc(len)) == NULL ||
@@ -586,8 +586,7 @@ sys_mincore(struct tcb *tcp)
}
tprintf("]");
}
- if (vec)
- free(vec);
+ free(vec);
}
return 0;
}