RichString: do not unnecessarily clean whole buffer

The local stack buffer does not need to be cleaned to zeros when
  - just initialized, cause the length is set to 0 and the first
    character is set to '\0', so all printing functions will safely stop
  - no further used, i.e. the variable goes out of scope
This commit is contained in:
Christian Göttsche
2021-03-07 15:31:41 +01:00
parent d9f2eacbc5
commit 1e806f9899
8 changed files with 22 additions and 22 deletions

View File

@ -16,8 +16,13 @@ in the source distribution for its full text.
#define RichString_sizeVal(this) ((this).chlen)
#define RichString_begin(this) RichString (this); RichString_beginAllocated(this)
#define RichString_beginAllocated(this) do { memset(&(this), 0, sizeof(RichString)); (this).chptr = (this).chstr; } while(0)
#define RichString_end(this) RichString_prune(&(this))
#define RichString_beginAllocated(this) \
do { \
(this).chlen = 0, \
(this).chptr = (this).chstr; \
RichString_setChar(&this, 0, 0); \
(this).highlightAttr = 0; \
} while(0)
#ifdef HAVE_LIBNCURSESW
#define RichString_printVal(this, y, x) mvadd_wchstr(y, x, (this).chptr)
@ -42,14 +47,14 @@ typedef struct RichString_ {
int highlightAttr;
} RichString;
void RichString_delete(RichString* this);
void RichString_rewind(RichString* this, int count);
void RichString_setAttrn(RichString* this, int attrs, int start, int charcount);
int RichString_findChar(const RichString* this, char c, int start);
void RichString_prune(RichString* this);
void RichString_setAttr(RichString* this, int attrs);
void RichString_appendChr(RichString* this, int attrs, char c, int count);