Bug Fix: WM_GETTEXT should return NULL string if LB_GETCURSEL
is LB_ERR
Shachar Shemesh
wine-devel at sun.consumer.org.il
Mon Jul 15 12:38:49 CDT 2002
+ LPWSTR lpText = (LPWSTR)lParam;
+ lpText[0] = '\0';
Shouldn't it be
+ LPWSTR lpText = (LPWSTR)lParam;
+ lpText[0] = L'\0';
?
Carl Sopchak wrote:
>I found this while trying to get Quicken 2000 Deluxe to run under wine. Q2k
>was crashing when adding a new security (stock) if nothing was seleted in the
>Asset Class ListBox. (It doesn't do this under "real Win NT"...) It turns
>out that Q2k seems to keep processing the value returned by WM_GETTEXT
>regardless of the number of characters WM_GETTEXT returns. Since wine's
>WM_GETTEXT was not returning a NULL string (='\0'), a subsequent strcpy (or
>some such) was choking because the string was not null terminated.
>
>The attached patch sets the return string to '\0' if LB_GETCURSEL returns
>LB_ERR. (Although this behaviour is not specified on msdn.microsoft.com, I
>figure it can't hurt, since the program calling WM_GETTEXT should be
>expecting the buffer to get changed by the call...) I don't know (and have
>not checked) to see if other *_GETTEXT message handlers need to do the
>same...
>
>One last point: I'm fairly new at C coding. If there's a better way to do
>what this patch does, feel free to improve upon it... <grin>
>
>Carl
>
>
>------------------------------------------------------------------------
>
>Index: controls/combo.c
>===================================================================
>RCS file: /home/wine/wine/controls/combo.c,v
>retrieving revision 1.85
>diff -u -r1.85 combo.c
>--- controls/combo.c 10 Jul 2002 23:11:28 -0000 1.85
>+++ controls/combo.c 15 Jul 2002 17:02:47 -0000
>@@ -1603,6 +1603,15 @@
> return (LRESULT)n;
> }
> }
>+ /* LB_GETCURSEL returned LB_ERR - truncate string, return zero */
>+ if (unicode)
>+ {
>+ LPWSTR lpText = (LPWSTR)lParam;
>+ lpText[0] = '\0';
>+ } else {
>+ LPSTR lpText = (LPSTR)lParam;
>+ lpText[0] = '\0';
>+ }
> return 0;
> }
>
>
>
More information about the wine-devel
mailing list