Fixing bug #2181, standard EDIT class extra value

Dmitry Timoshkov dmitry at codeweavers.com
Sat Oct 3 23:04:04 CDT 2009


"Julius Schwartzenberg" <julius.schwartzenberg at gmail.com> wrote:

> diff --git a/dlls/user32/edit.c b/dlls/user32/edit.c
> index 8ad945b..53eb052 100644
> --- a/dlls/user32/edit.c
> +++ b/dlls/user32/edit.c
> @@ -5416,7 +5416,7 @@ const struct builtin_class_descr EDIT_builtin_class =
>     CS_DBLCLKS | CS_PARENTDC,   /* style */
>     EditWndProcA,         /* procA */
>     EditWndProcW,         /* procW */
> -    sizeof(EDITSTATE *),  /* extra */
> +    6,                    /* extra */
>     IDC_IBEAM,            /* cursor */
>     0                     /* brush */
> };

This obviously won't work for 64-bit. I'd suggest to make extra
2 * sizeof(void *). and add a comment about compatibility.

> diff --git a/dlls/user32/tests/edit.c b/dlls/user32/tests/edit.c
> index 5ca012e..ec00b90 100644
> --- a/dlls/user32/tests/edit.c
> +++ b/dlls/user32/tests/edit.c
> @@ -2260,6 +2260,15 @@ static void test_dialogmode(void)
>     destroy_child_editcontrol(hwEdit);
> }
> 
> +static void test_extra_value()
> +{
> +    WNDCLASSEX cls;
> +    int r;
> +    GetClassInfoEx(NULL,"Edit",&cls);
> +    r = cls.cbWndExtra;
> +    ok(6 == r, "expected 6, got %d\n", r);
> +}

ok(cls.cbWndExtra > sizeof(void *), "blah ...\n") doesn't require
any intermediate variables.

-- 
Dmitry.



More information about the wine-devel mailing list