From 801a3de6d7f18c2d467b7e1a0deda3e86caa5c6b Mon Sep 17 00:00:00 2001 From: Ashish Kumar Yadav Date: Sun, 28 Mar 2021 12:46:35 +0530 Subject: [PATCH] Fixed subtle bug in and simplified updateblock --- dwmblocks.c | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/dwmblocks.c b/dwmblocks.c index a38cdf6..c151d51 100644 --- a/dwmblocks.c +++ b/dwmblocks.c @@ -12,7 +12,7 @@ #define NILL INT_MIN #define LOCKFILE "/tmp/dwmblocks.pid" -#define DELIMITERLENGTH sizeof delimiter +#define DELIMITERLENGTH (sizeof delimiter) #define STATUSLENGTH ((sizeof blocks / sizeof blocks[0]) * (CMDOUTLENGTH + DELIMITERLENGTH)) #include "config.h" @@ -213,21 +213,18 @@ updateblock(Block *block, int sigval) exit(1); } close(fd[0]); - if (trd == 0) { - if (block->prvtext[0] != '\0') { - block->prvtext[0] = '\0'; - if (!dirtyblock || block < dirtyblock) - dirtyblock = block; - } + + block->curtext[trd] = '\0'; + if (memcmp(block->curtext, block->prvtext, trd + 1) != 0) { + memcpy(block->prvtext, block->curtext, trd + 1); + if (!dirtyblock || block < dirtyblock) + dirtyblock = block; + } + if (trd == 0) block->length = 0; - } else { + else { if (block->curtext[trd - 1] == '\n') trd--; - if (memcmp(block->curtext, block->prvtext, trd + 1) != 0) { - memcpy(block->prvtext, block->curtext, trd + 1); - if (!dirtyblock || block < dirtyblock) - dirtyblock = block; - } if (block->pathc) block->curtext[trd++] = block->signal; memcpy(block->curtext + trd, delimiter, DELIMITERLENGTH);