changeset 1623:33d7cf373938

After looking at that last commit I realized what I was doing was unsafe... so rewriting the code safely.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Tue, 27 Mar 2012 17:00:44 +0000
parents fb3c9d7509dd
children c5aab296fba3
files win/dw.c
diffstat 1 files changed, 5 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/win/dw.c	Tue Mar 27 16:53:24 2012 +0000
+++ b/win/dw.c	Tue Mar 27 17:00:44 2012 +0000
@@ -7755,18 +7755,18 @@
    TCHAR tmpbuf[100] = {0}, *wbuffer;
    unsigned int len;
 
-   if(!buffer || !length || !(wbuffer = _alloca((length+1)*sizeof(TCHAR))))
+   buffer[0] = 0;
+
+   if(!buffer || !length)
       return;
 
-   buffer[0] = 0;
-
    GetClassName(handle, tmpbuf, 99);
 
    if(_tcsnicmp(tmpbuf, COMBOBOXCLASSNAME, _tcslen(COMBOBOXCLASSNAME)+1)==0)
    {
       len = (int)SendMessage(handle, CB_GETLBTEXTLEN, (WPARAM)index, 0);
 
-      if(len < length && len != CB_ERR)
+      if(len != CB_ERR && (wbuffer = _alloca((len+1)*sizeof(TCHAR))))
       {
          SendMessage(handle, CB_GETLBTEXT, (WPARAM)index, (LPARAM)wbuffer);
          strncpy(buffer, WideToUTF8(wbuffer), length);
@@ -7776,13 +7776,12 @@
    {
       len = (int)SendMessage(handle, LB_GETTEXTLEN, (WPARAM)index, 0);
 
-      if(len < length && len != LB_ERR)
+      if(len != LB_ERR && (wbuffer = _alloca((len+1)*sizeof(TCHAR))))
       {
          SendMessage(handle, LB_GETTEXT, (WPARAM)index, (LPARAM)wbuffer);
          strncpy(buffer, WideToUTF8(wbuffer), length);
       }
    }
-   
 }
 
 /*