Mercurial > dwindows
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); } } - } /*