diff options
author | ISHIKAWA,chiaki <ishikawa@yk.rim.or.jp> | 2012-12-18 15:28:05 +0000 |
---|---|---|
committer | Ulrich Sibiller <uli42@gmx.de> | 2016-10-19 21:40:28 +0200 |
commit | ce482d4fd8fe565810391b0ac89e4b1ac8fd7212 (patch) | |
tree | d711b884f459b9a4aa0461e27fa988b7c29c707f | |
parent | ed53aca1d68a5d7511b1304f11a43ba80885fbe2 (diff) | |
download | nx-libs-ce482d4fd8fe565810391b0ac89e4b1ac8fd7212.tar.gz nx-libs-ce482d4fd8fe565810391b0ac89e4b1ac8fd7212.tar.bz2 nx-libs-ce482d4fd8fe565810391b0ac89e4b1ac8fd7212.zip |
Fix bogus timestamp generated by XIM
Fix bogus timestamp generted by XIM due to uninitialized
data field. Also set appropriate serial, too.
Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=39367
Signed-off-by: Chiaki ISHIKAWA <ishikawa@yk.rim.or.jp>
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Backported-to-NX-by: Ulrich Sibiller <uli42@gmx.de>
-rw-r--r-- | nx-X11/lib/X11/imDefLkup.c | 13 | ||||
-rw-r--r-- | nx-X11/lib/X11/imTrans.c | 8 |
2 files changed, 21 insertions, 0 deletions
diff --git a/nx-X11/lib/X11/imDefLkup.c b/nx-X11/lib/X11/imDefLkup.c index 8a6b7e5a9..3317831e6 100644 --- a/nx-X11/lib/X11/imDefLkup.c +++ b/nx-X11/lib/X11/imDefLkup.c @@ -269,6 +269,8 @@ _XimForwardEventCore( int ret_code; INT16 len; + bzero(buf32, sizeof(buf32)); /* valgrind noticed uninitialized memory use! */ + if (!(len = _XimSetEventToWire(ev, (xEvent *)&buf_s[4]))) return False; /* X event */ @@ -708,6 +710,8 @@ _XimCommitRecv( & (KEYPRESS_MASK | KEYRELEASE_MASK)) MARK_FABRICATED(im); + bzero(&ev, sizeof(ev)); /* uninitialized : found when running kterm under valgrind */ + ev.type = KeyPress; ev.send_event = False; ev.display = im->core.display; @@ -715,6 +719,15 @@ _XimCommitRecv( ev.keycode = 0; ev.state = 0; + ev.time = 0L; + ev.serial = LastKnownRequestProcessed(im->core.display); + /* FIXME : + I wish there were COMMENTs (!) about the data passed around. + */ +#if 0 + fprintf(stderr,"%s,%d: putback k press FIXED ev.time=0 ev.serial=%lu\n", __FILE__, __LINE__, ev.serial); +#endif + XPutBackEvent(im->core.display, (XEvent *)&ev); return True; diff --git a/nx-X11/lib/X11/imTrans.c b/nx-X11/lib/X11/imTrans.c index f06759f88..3cea659f9 100644 --- a/nx-X11/lib/X11/imTrans.c +++ b/nx-X11/lib/X11/imTrans.c @@ -222,12 +222,20 @@ _XimTransInternalConnection( if (spec->is_putback) return; + + bzero(&ev, sizeof(ev)); /* FIXME: other fields may be accessed, too. */ kev = (XKeyEvent *)&ev; kev->type = KeyPress; kev->send_event = False; kev->display = im->core.display; kev->window = spec->window; kev->keycode = 0; + kev->time = 0L; + kev->serial = LastKnownRequestProcessed(im->core.display); +#if 0 + fprintf(stderr,"%s,%d: putback FIXED kev->time=0 kev->serial=%lu\n", __FILE__, __LINE__, kev->serial); +#endif + XPutBackEvent(im->core.display, &ev); XFlush(im->core.display); spec->is_putback = True; |