diff options
author | fvogel <fvogelnew1@free.fr> | 2016-05-01 19:58:09 (GMT) |
---|---|---|
committer | fvogel <fvogelnew1@free.fr> | 2016-05-01 19:58:09 (GMT) |
commit | e0dd525d1c6f6529f948278455342cc280d50540 (patch) | |
tree | 3178671fe099d47c123714b2321c916c16236da3 /generic/tkUtil.c | |
parent | 8949d8b37009d2dd0f9a410577f95d19d3419353 (diff) | |
parent | ede13558f13645c01b9dff12f05b15d6e0435995 (diff) | |
download | tk-e0dd525d1c6f6529f948278455342cc280d50540.zip tk-e0dd525d1c6f6529f948278455342cc280d50540.tar.gz tk-e0dd525d1c6f6529f948278455342cc280d50540.tar.bz2 |
Fixed [b362182e45] - Generation of virtual events through Tk_HandleEvent is unsafe
Diffstat (limited to 'generic/tkUtil.c')
-rw-r--r-- | generic/tkUtil.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/generic/tkUtil.c b/generic/tkUtil.c index 7ff9ecb..6563165 100644 --- a/generic/tkUtil.c +++ b/generic/tkUtil.c @@ -1162,7 +1162,8 @@ TkMakeEnsemble( * TkSendVirtualEvent -- * * Send a virtual event notification to the specified target window. - * Equivalent to "event generate $target <<$eventName>>" + * Equivalent to: + * "event generate $target <<$eventName>> -data $detail" * * Note that we use Tk_QueueWindowEvent, not Tk_HandleEvent, so this * routine does not reenter the interpreter. @@ -1173,7 +1174,8 @@ TkMakeEnsemble( void TkSendVirtualEvent( Tk_Window target, - const char *eventName) + const char *eventName, + Tcl_Obj *detail) { union {XEvent general; XVirtualEvent virtual;} event; @@ -1184,6 +1186,9 @@ TkSendVirtualEvent( event.general.xany.window = Tk_WindowId(target); event.general.xany.display = Tk_Display(target); event.virtual.name = Tk_GetUid(eventName); + if (detail != NULL) { + event.virtual.user_data = detail; + } Tk_QueueWindowEvent(&event.general, TCL_QUEUE_TAIL); } |