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); }
signature.asc
Description: Digital signature