* tests/futex.c (sprintrc): Print the actual return code provided, not
  just "0".
---
 tests/futex.c |   13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/tests/futex.c b/tests/futex.c
index edb5c9d..fb7833c 100644
--- a/tests/futex.c
+++ b/tests/futex.c
@@ -147,11 +147,22 @@ const char *sprintrc(int rc)
 {
        enum { RES_BUF_SIZE = 4095 };
        static char buf[RES_BUF_SIZE];
+       int saved_errno = errno;
+       int ret;
 
+       /* Common case, making it quick and error-free */
        if (rc == 0)
                return "0";
 
-       snprintf(buf, sizeof(buf), "-1 %s (%m)", errno2name());
+       ret = snprintf(buf, sizeof(buf), "%d", rc);
+
+       if (ret < 0)
+               perror_msg_and_fail("snprintf");
+       if ((rc != -1) || ((size_t)ret >= sizeof(buf)))
+               return buf;
+
+       errno = saved_errno;
+       snprintf(buf + ret, sizeof(buf) - ret, " %s (%m)", errno2name());
 
        return buf;
 }
-- 
1.7.10.4


------------------------------------------------------------------------------
_______________________________________________
Strace-devel mailing list
Strace-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/strace-devel

Reply via email to