From 53a1b9650bcbbfd5ee161ffa2ae3250530dc80a2 Mon Sep 17 00:00:00 2001 From: Jim Warner Date: Tue, 3 Oct 2017 00:00:00 -0500 Subject: [PATCH] top: again avoid multiple evaluation of macro argument Before top was modified to exploit the new api, there was protection in that task_show() makeVAR macro to avoid multiple evaluation of this macro's argument. But, in that commit referenced below, such a safeguard was lost. This commit simply restores proper behavior. Reference(s); . offending change commit 77dc22b9101af39fc30306e36d65cad2b396cc9e Signed-off-by: Jim Warner --- top/top.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/top/top.c b/top/top.c index 3378587f..c6d38cf3 100644 --- a/top/top.c +++ b/top/top.c @@ -5072,8 +5072,9 @@ static const char *task_show (const WIN_t *q, struct pids_stack *p) { // a tailored 'results stack value' extractor macro #define rSv(E,T) PID_VAL(E, T, p) #ifndef SCROLLVAR_NO - #define makeVAR(S) { if (!q->varcolbeg) cp = make_str(S, q->varcolsz, Js, AUTOX_NO); \ - else cp = make_str(q->varcolbeg < (int)strlen(S) ? S + q->varcolbeg : "", q->varcolsz, Js, AUTOX_NO); } + #define makeVAR(S) { const char *pv = S; \ + if (!q->varcolbeg) cp = make_str(pv, q->varcolsz, Js, AUTOX_NO); \ + else cp = make_str(q->varcolbeg < (int)strlen(pv) ? pv + q->varcolbeg : "", q->varcolsz, Js, AUTOX_NO); } #define varUTF8(S) { const char *pv = S; \ if (!q->varcolbeg) cp = make_str_utf8(pv, q->varcolsz, Js, AUTOX_NO); \ else cp = make_str_utf8((q->varcolbeg < ((int)strlen(pv) - utf8_delta(pv))) \