aboutsummaryrefslogtreecommitdiff
path: root/nx-X11/lib/X11
diff options
context:
space:
mode:
authorISHIKAWA,chiaki <ishikawa@yk.rim.or.jp>2012-12-18 15:28:05 +0000
committerUlrich Sibiller <uli42@gmx.de>2016-10-19 21:40:28 +0200
commitce482d4fd8fe565810391b0ac89e4b1ac8fd7212 (patch)
treed711b884f459b9a4aa0461e27fa988b7c29c707f /nx-X11/lib/X11
parented53aca1d68a5d7511b1304f11a43ba80885fbe2 (diff)
downloadnx-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>
Diffstat (limited to 'nx-X11/lib/X11')
-rw-r--r--nx-X11/lib/X11/imDefLkup.c13
-rw-r--r--nx-X11/lib/X11/imTrans.c8
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;