Mercurial > dwindows
comparison win/dw.c @ 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 |
comparison
equal
deleted
inserted
replaced
1622:fb3c9d7509dd | 1623:33d7cf373938 |
---|---|
7753 void API dw_listbox_get_text(HWND handle, unsigned int index, char *buffer, unsigned int length) | 7753 void API dw_listbox_get_text(HWND handle, unsigned int index, char *buffer, unsigned int length) |
7754 { | 7754 { |
7755 TCHAR tmpbuf[100] = {0}, *wbuffer; | 7755 TCHAR tmpbuf[100] = {0}, *wbuffer; |
7756 unsigned int len; | 7756 unsigned int len; |
7757 | 7757 |
7758 if(!buffer || !length || !(wbuffer = _alloca((length+1)*sizeof(TCHAR)))) | 7758 buffer[0] = 0; |
7759 | |
7760 if(!buffer || !length) | |
7759 return; | 7761 return; |
7760 | 7762 |
7761 buffer[0] = 0; | |
7762 | |
7763 GetClassName(handle, tmpbuf, 99); | 7763 GetClassName(handle, tmpbuf, 99); |
7764 | 7764 |
7765 if(_tcsnicmp(tmpbuf, COMBOBOXCLASSNAME, _tcslen(COMBOBOXCLASSNAME)+1)==0) | 7765 if(_tcsnicmp(tmpbuf, COMBOBOXCLASSNAME, _tcslen(COMBOBOXCLASSNAME)+1)==0) |
7766 { | 7766 { |
7767 len = (int)SendMessage(handle, CB_GETLBTEXTLEN, (WPARAM)index, 0); | 7767 len = (int)SendMessage(handle, CB_GETLBTEXTLEN, (WPARAM)index, 0); |
7768 | 7768 |
7769 if(len < length && len != CB_ERR) | 7769 if(len != CB_ERR && (wbuffer = _alloca((len+1)*sizeof(TCHAR)))) |
7770 { | 7770 { |
7771 SendMessage(handle, CB_GETLBTEXT, (WPARAM)index, (LPARAM)wbuffer); | 7771 SendMessage(handle, CB_GETLBTEXT, (WPARAM)index, (LPARAM)wbuffer); |
7772 strncpy(buffer, WideToUTF8(wbuffer), length); | 7772 strncpy(buffer, WideToUTF8(wbuffer), length); |
7773 } | 7773 } |
7774 } | 7774 } |
7775 else | 7775 else |
7776 { | 7776 { |
7777 len = (int)SendMessage(handle, LB_GETTEXTLEN, (WPARAM)index, 0); | 7777 len = (int)SendMessage(handle, LB_GETTEXTLEN, (WPARAM)index, 0); |
7778 | 7778 |
7779 if(len < length && len != LB_ERR) | 7779 if(len != LB_ERR && (wbuffer = _alloca((len+1)*sizeof(TCHAR)))) |
7780 { | 7780 { |
7781 SendMessage(handle, LB_GETTEXT, (WPARAM)index, (LPARAM)wbuffer); | 7781 SendMessage(handle, LB_GETTEXT, (WPARAM)index, (LPARAM)wbuffer); |
7782 strncpy(buffer, WideToUTF8(wbuffer), length); | 7782 strncpy(buffer, WideToUTF8(wbuffer), length); |
7783 } | 7783 } |
7784 } | 7784 } |
7785 | |
7786 } | 7785 } |
7787 | 7786 |
7788 /* | 7787 /* |
7789 * Returns the index to the item in the list currently selected. | 7788 * Returns the index to the item in the list currently selected. |
7790 * Parameters: | 7789 * Parameters: |