winex11.drv: Handle arbitrary length composed input.
Marcus Meissner
meissner at suse.de
Wed Mar 19 04:20:21 CDT 2008
On Wed, Mar 19, 2008 at 06:16:36PM +0900, Kusanagi Kouichi wrote:
> Fix bug #9838. http://bugs.winehq.org/show_bug.cgi?id=9838
> ---
> dlls/winex11.drv/keyboard.c | 25 ++++++++++++++++---------
> dlls/winex11.drv/xim.c | 16 ++++++++++------
> 2 files changed, 26 insertions(+), 15 deletions(-)
>
> diff --git a/dlls/winex11.drv/keyboard.c b/dlls/winex11.drv/keyboard.c
> index 33640db..386a471 100644
> --- a/dlls/winex11.drv/keyboard.c
> +++ b/dlls/winex11.drv/keyboard.c
> @@ -1365,22 +1365,29 @@ void X11DRV_KeyEvent( HWND hwnd, XEvent *xev )
> wine_tsx11_lock();
> /* Clients should pass only KeyPress events to XmbLookupString */
> if (xic && event->type == KeyPress)
> + {
> ascii_chars = XmbLookupString(xic, event, Str, sizeof(Str), &keysym, &status);
> +
> + if (status == XBufferOverflow)
> + {
> + char buf[ascii_chars];
You should not use dynamic sized arrays. Use HeapAlloc() to allocate them.
Ciao, Marcus
More information about the wine-devel
mailing list