summaryrefslogtreecommitdiffstats
path: root/RichString.c
diff options
context:
space:
mode:
authorHisham Muhammad <hisham@gobolinux.org>2015-08-27 21:45:02 -0300
committerHisham Muhammad <hisham@gobolinux.org>2015-08-27 21:45:02 -0300
commit7985724933a33ba5f57b266bb282cedf0dacb5b4 (patch)
tree7cfb0c28bd5b2acabdf0228788bf76cee373f00b /RichString.c
parentbdadd45a881b9b59f7b2ac9a655b5e5c6cde5fa7 (diff)
Fixes for color glitches in ncurses ABI6.
Could no longer reproduce #244 after these fixes.
Diffstat (limited to 'RichString.c')
-rw-r--r--RichString.c17
1 files changed, 7 insertions, 10 deletions
diff --git a/RichString.c b/RichString.c
index efabe67a..8a06baae 100644
--- a/RichString.c
+++ b/RichString.c
@@ -44,7 +44,7 @@ in the source distribution for its full text.
#define RichString_printVal(this, y, x) mvadd_wchstr(y, x, (this).chptr)
#define RichString_printoffnVal(this, y, x, off, n) mvadd_wchnstr(y, x, (this).chptr + off, n)
#define RichString_getCharVal(this, i) ((this).chptr[i].chars[0] & 255)
-#define RichString_setChar(this, at, ch) do{ (this)->chptr[(at)].chars[0] = ch; } while(0)
+#define RichString_setChar(this, at, ch) do{ (this)->chptr[(at)] = (CharType) { .chars = { ch, 0 } }; } while(0)
#define CharType cchar_t
#else
#define RichString_printVal(this, y, x) mvaddchstr(y, x, (this).chptr)
@@ -71,16 +71,16 @@ typedef struct RichString_ {
static void RichString_extendLen(RichString* this, int len) {
if (this->chlen <= RICHSTRING_MAXLEN) {
if (len > RICHSTRING_MAXLEN) {
- this->chptr = malloc(charBytes(len+1));
- memcpy(this->chptr, this->chstr, charBytes(this->chlen+1));
+ this->chptr = malloc(charBytes(len + 1));
+ memcpy(this->chptr, this->chstr, charBytes(this->chlen));
}
} else {
if (len <= RICHSTRING_MAXLEN) {
- memcpy(this->chstr, this->chptr, charBytes(this->chlen));
+ memcpy(this->chstr, this->chptr, charBytes(len));
free(this->chptr);
this->chptr = this->chstr;
} else {
- this->chptr = realloc(this->chptr, charBytes(len+1));
+ this->chptr = realloc(this->chptr, charBytes(len + 1));
}
}
@@ -95,17 +95,14 @@ static void RichString_extendLen(RichString* this, int len) {
static inline void RichString_writeFrom(RichString* this, int attrs, const char* data_c, int from, int len) {
wchar_t data[len+1];
len = mbstowcs(data, data_c, len);
- if (len<0)
+ if (len < 0)
return;
int newLen = from + len;
RichString_setLen(this, newLen);
for (int i = from, j = 0; i < newLen; i++, j++) {
CharType* c = &(this->chptr[i]);
- c->attr = attrs;
- c->chars[0] = (iswprint(data[j]) ? data[j] : '?');
- c->chars[1] = 0;
+ *c = (CharType) { .attr = attrs, .chars = { (iswprint(data[j]) ? data[j] : '?') } };
}
- this->chptr[newLen].chars[0] = 0;
}
inline void RichString_setAttrn(RichString* this, int attrs, int start, int finish) {

© 2014-2024 Faster IT GmbH | imprint | privacy policy