]> granicus.if.org Git - strace/commitdiff
wait.c: use printaddr and umove_or_printaddr
authorDmitry V. Levin <ldv@altlinux.org>
Wed, 15 Jul 2015 00:36:20 +0000 (00:36 +0000)
committerDmitry V. Levin <ldv@altlinux.org>
Wed, 15 Jul 2015 00:49:27 +0000 (00:49 +0000)
* wait.c (waitid): Do not check for NULL the address passed
to printrusage.
(printwaitn): Likewise.
Use printaddr and umove_or_printaddr for fetching wait status.

wait.c

diff --git a/wait.c b/wait.c
index 09341c52e47564a619b897253c07805fc5237853..2e495dbf94117a5acf861a28eecff4a5a7b8c35b 100644 (file)
--- a/wait.c
+++ b/wait.c
@@ -98,13 +98,9 @@ printwaitn(struct tcb *tcp, int n, int bitness)
                tprintf("%d, ", pid);
        } else {
                /* status */
-               if (!tcp->u_arg[1])
-                       tprints("NULL");
-               else if (syserror(tcp) || tcp->u_rval == 0)
-                       tprintf("%#lx", tcp->u_arg[1]);
-               else if (umove(tcp, tcp->u_arg[1], &status) < 0)
-                       tprints("[?]");
-               else
+               if (tcp->u_rval == 0)
+                       printaddr(tcp->u_arg[1]);
+               else if (!umove_or_printaddr(tcp, tcp->u_arg[1], &status))
                        printstatus(status);
                /* options */
                tprints(", ");
@@ -112,9 +108,7 @@ printwaitn(struct tcb *tcp, int n, int bitness)
                if (n == 4) {
                        tprints(", ");
                        /* usage */
-                       if (!tcp->u_arg[3])
-                               tprints("NULL");
-                       else if (tcp->u_rval > 0) {
+                       if (tcp->u_rval > 0) {
 #ifdef ALPHA
                                if (bitness)
                                        printrusage32(tcp, tcp->u_arg[3]);
@@ -123,7 +117,7 @@ printwaitn(struct tcb *tcp, int n, int bitness)
                                        printrusage(tcp, tcp->u_arg[3]);
                        }
                        else
-                               tprintf("%#lx", tcp->u_arg[3]);
+                               printaddr(tcp->u_arg[3]);
                }
        }
        return 0;
@@ -153,8 +147,7 @@ SYS_FUNC(waitid)
        if (entering(tcp)) {
                printxval(waitid_types, tcp->u_arg[0], "P_???");
                tprintf(", %ld, ", tcp->u_arg[1]);
-       }
-       else {
+       } else {
                /* siginfo */
                printsiginfo_at(tcp, tcp->u_arg[2]);
                /* options */
@@ -163,12 +156,7 @@ SYS_FUNC(waitid)
                if (tcp->s_ent->nargs > 4) {
                        /* usage */
                        tprints(", ");
-                       if (!tcp->u_arg[4])
-                               tprints("NULL");
-                       else if (tcp->u_error)
-                               tprintf("%#lx", tcp->u_arg[4]);
-                       else
-                               printrusage(tcp, tcp->u_arg[4]);
+                       printrusage(tcp, tcp->u_arg[4]);
                }
        }
        return 0;