]> granicus.if.org Git - strace/commitdiff
util: avoid double printing of ellipsis in print_array
authorEugene Syromyatnikov <evgsyr@gmail.com>
Fri, 4 Oct 2019 13:13:40 +0000 (15:13 +0200)
committerEugene Syromyatnikov <evgsyr@gmail.com>
Fri, 4 Oct 2019 13:16:33 +0000 (15:16 +0200)
When PAF_ARRAY_TRUNCATED flag is provided to print_array_ex.

* util.c (print_array_ex): Add truncated flag, set it when the output
is truncated, avoid explicit ellipsis printing when it is set.

Fixes: v5.3~14 "Add PAF_ARRAY_TRUNCATED flag for print_array_ex"
util.c

diff --git a/util.c b/util.c
index 8d9e092bc4fa84f0a7f277713274dfa3bbdfca69..8781bdf42029decf14a867b7c2e2a94a3cf4ca17 100644 (file)
--- a/util.c
+++ b/util.c
@@ -1329,6 +1329,7 @@ print_array_ex(struct tcb *const tcp,
        kernel_ulong_t cur;
        kernel_ulong_t idx = 0;
        enum xlat_style xlat_style = flags & XLAT_STYLE_MASK;
+       bool truncated = false;
 
        for (cur = start_addr; cur < end_addr; cur += elem_size, idx++) {
                if (cur != start_addr)
@@ -1341,6 +1342,7 @@ print_array_ex(struct tcb *const tcp,
                                else {
                                        tprints("...");
                                        printaddr_comment(cur);
+                                       truncated = true;
                                }
                                break;
                        }
@@ -1354,6 +1356,7 @@ print_array_ex(struct tcb *const tcp,
                if (cur >= abbrev_end) {
                        tprints("...");
                        cur = end_addr;
+                       truncated = true;
                        break;
                }
 
@@ -1377,7 +1380,7 @@ print_array_ex(struct tcb *const tcp,
        }
 
        if ((cur != start_addr) || !tfetch_mem_func) {
-               if (flags & PAF_ARRAY_TRUNCATED) {
+               if ((flags & PAF_ARRAY_TRUNCATED) && !truncated) {
                        if (cur != start_addr)
                                tprints(", ");