On Mon, Sep 20, 2004 at 12:49:57AM -0700, Steve Langasek wrote: > Please try the attached patch to slang. I did some cleanups on the patch. Bastian -- Insufficient facts always invite danger. -- Spock, "Space Seed", stardate 3141.9
diff -ur slang-1.4.9.orig/src/slsmg.c slang-1.4.9-utf8/src/slsmg.c
--- slang-1.4.9.orig/src/slsmg.c 2004-09-20 09:17:58.000000000 +0200
+++ slang-1.4.9-utf8/src/slsmg.c 2004-09-20 10:10:44.000000000 +0200
@@ -309,7 +309,8 @@
if ((int) n < 0)
return;
- wptr = (wchar_t *)malloc(sizeof(wchar_t)*(n+1));
+ size_t wptr_len = n;
+ wptr = malloc(sizeof(wchar_t) * wptr_len);
if (str != NULL && wptr != NULL)
{
@@ -328,6 +329,14 @@
str += k;
n -= w;
i++;
+ /* We have some null-width chars in the string and need more space */
+ if (i >= wptr_len - 1) {
+ wchar_t *new_wptr = realloc(wptr, sizeof(wchar_t) * wptr_len * 2);
+ if (!new_wptr)
+ break;
+ wptr_len *= 2;
+ wptr = new_wptr;
+ }
}
SLsmg_write_nwchars (wptr, i);
}
Attachment:
signature.asc
Description: Digital signature