summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHisham Muhammad <hisham@gobolinux.org>2009-03-11 13:51:50 +0000
committerHisham Muhammad <hisham@gobolinux.org>2009-03-11 13:51:50 +0000
commit31b3a2d2db158dd98da8f02e05ea348c4b564f0c (patch)
tree885edf8d320aa10d819a584e8073cc5c207c8e28
parent385a7dbe1ec8b8a64d8999019028cce71565c4dc (diff)
catch nonprintable characters
-rw-r--r--RichString.c4
-rw-r--r--RichString.h1
2 files changed, 4 insertions, 1 deletions
diff --git a/RichString.c b/RichString.c
index c397f3f1..fbcb17f1 100644
--- a/RichString.c
+++ b/RichString.c
@@ -9,6 +9,7 @@
#include <stdlib.h>
#include <string.h>
#include <curses.h>
+#include <ctype.h>
#include "debug.h"
#include <assert.h>
@@ -89,7 +90,8 @@ int RichString_findChar(RichString *this, char c, int start) {
inline void RichString_appendn(RichString* this, int attrs, char* data_c, int len) {
int last = MIN(RICHSTRING_MAXLEN - 1, len + this->len);
for (int i = this->len, j = 0; i < last; i++, j++)
- this->chstr[i] = data_c[j] | attrs;
+ this->chstr[i] = (isprint(data_c[j]) ? data_c[j] : '?') | attrs;
+
this->chstr[last] = 0;
this->len = last;
}
diff --git a/RichString.h b/RichString.h
index 7f777bba..036a24a4 100644
--- a/RichString.h
+++ b/RichString.h
@@ -12,6 +12,7 @@
#include <stdlib.h>
#include <string.h>
#include <curses.h>
+#include <ctype.h>
#include "debug.h"
#include <assert.h>