On August 14, 2002 01:53 pm, Carl Sopchak wrote:
It was suggested to me that I should not use strlen(), since I'm not positive if the string will ever really terminate (which may cause a seg fault), so I programmed my own scan for a null character..
Here's the revised patch (attached).
What about this:
--- controls/edit.c 13 Jun 2002 19:20:43 -0000 1.95 +++ controls/edit.c 14 Aug 2002 17:49:13 -0000 @@ -3957,20 +3957,25 @@ */ static INT EDIT_WM_GetText(EDITSTATE *es, INT count, LPARAM lParam, BOOL unicode) { + INT ii; + if(!count) return 0;
if(unicode) { LPWSTR textW = (LPWSTR)lParam; strncpyW(textW, es->text, count); - textW[count - 1] = 0; /* ensure 0 termination */ + for (ii = 0; (ii < count) & textW[ii]; i++) ; + textW[ii - 1] = 0; /* force 0 termination */ return strlenW(textW); } else { LPSTR textA = (LPSTR)lParam; WideCharToMultiByte(CP_ACP, 0, es->text, -1, textA, count, NULL, NULL); - textA[count - 1] = 0; /* ensure 0 termination */ + for (ii = 0; (ii < count) & textA[ii]; i++) ; + textA[ii - 1] = 0; /* force 0 termination */ return strlen(textA); } }
Untested :)