diff options
| author | Manolo Gouy <Manolo> | 2010-12-11 14:59:22 +0000 |
|---|---|---|
| committer | Manolo Gouy <Manolo> | 2010-12-11 14:59:22 +0000 |
| commit | 97149d19a5b8a2a36684b55d85b854bdc7588f7c (patch) | |
| tree | 50055eab4bbb68aa5e4528f1721ff90477bfaa9e /src | |
| parent | de7b3456c4d8705976e7f2e1185792d1912f29ae (diff) | |
Better algorithm for function convert_crlf().
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@8009 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'src')
| -rw-r--r-- | src/Fl_x.cxx | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/src/Fl_x.cxx b/src/Fl_x.cxx index 1da79a8ac..4303f0416 100644 --- a/src/Fl_x.cxx +++ b/src/Fl_x.cxx @@ -280,15 +280,13 @@ int fl_ready() { // replace \r\n by \n static void convert_crlf(unsigned char *string, long& len) { - unsigned char *p = string, *q = p + len; - while (p + 1 < q) { - if (*p == '\r' && *(p + 1) == '\n') { - memmove(p, p + 1, q - p - 1); - q--; - len--; - } - p++; + unsigned char *a, *b; + a = b = string; + while (*a) { + if (*a == '\r' && a[1] == '\n') { a++; len--; } + else *b++ = *a++; } + *b = 0; } //////////////////////////////////////////////////////////////// @@ -571,7 +569,6 @@ void fl_init_xim() } } - void fl_open_display() { if (fl_display) return; @@ -977,8 +974,8 @@ int fl_handle(const XEvent& thisevent) if (!remaining) break; } if (buffer) { - convert_crlf(buffer, bytesread); buffer[bytesread] = 0; + convert_crlf(buffer, bytesread); } Fl::e_text = buffer ? (char*)buffer : (char *)""; Fl::e_length = bytesread; |
