From 8bd603cb68fb5dd768b5b23ffe0c6f09f5340ceb Mon Sep 17 00:00:00 2001 From: Hisham Muhammad Date: Thu, 20 Aug 2015 00:31:48 -0300 Subject: Make Unicode strings safe for ncurses 6 ABI. Closes #241. --- RichString.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'RichString.c') diff --git a/RichString.c b/RichString.c index 22ffecb5..ad90a0ac 100644 --- a/RichString.c +++ b/RichString.c @@ -32,8 +32,8 @@ in the source distribution for its full text. #define RichString_size(this) ((this)->chlen) #define RichString_sizeVal(this) ((this).chlen) -#define RichString_begin(this) RichString (this); (this).chlen = 0; (this).chptr = (this).chstr; -#define RichString_beginAllocated(this) (this).chlen = 0; (this).chptr = (this).chstr; +#define RichString_begin(this) RichString (this); memset(&this, 0, sizeof(RichString)); (this).chptr = (this).chstr; +#define RichString_beginAllocated(this) memset(&this, 0, sizeof(RichString)); (this).chptr = (this).chstr; #define RichString_end(this) RichString_prune(&(this)); #ifdef HAVE_LIBNCURSESW @@ -79,6 +79,7 @@ static void RichString_extendLen(RichString* this, int len) { this->chptr = realloc(this->chptr, charBytes(len+1)); } } + RichString_setChar(this, len, 0); this->chlen = len; } @@ -155,9 +156,8 @@ int RichString_findChar(RichString* this, char c, int start) { void RichString_prune(RichString* this) { if (this->chlen > RICHSTRING_MAXLEN) free(this->chptr); + memset(this, 0, sizeof(RichString)); this->chptr = this->chstr; - this->chlen = 0; - RichString_setChar(this, 0, 0); } void RichString_setAttr(RichString* this, int attrs) { -- cgit v1.2.3