Avoid a case where a struct's fields might be updated after it was freed.

* ui.[ch] (filter_func): Avoid a case where a struct's
fields might be updated after it was freed. #348067.
This commit is contained in:
Thomas James Alexander Thurman 2006-07-22 01:45:21 +00:00
parent 85f9c499fb
commit 5e85bf7210
2 changed files with 14 additions and 6 deletions

View File

@ -1,3 +1,8 @@
2006-07-21 Thomas Thurman <thomas@thurman.org.uk>
* ui.[ch] (filter_func): Avoid a case where a struct's
fields might be updated after it was freed. #348067.
2006-07-10 Elijah Newren <newren gmail com>
* configure.in: post-release version bump to 2.15.13

View File

@ -70,26 +70,29 @@ struct _EventFunc
int last_event_serial;
};
static EventFunc *ef = NULL;
static GdkFilterReturn
filter_func (GdkXEvent *xevent,
GdkEvent *event,
gpointer data)
{
EventFunc *ef;
ef = data;
g_return_if_fail (ef != NULL);
if ((* ef->func) (xevent, ef->data))
return GDK_FILTER_REMOVE;
else
{
ef->last_event_serial = ((XEvent*)xevent)->xany.serial;
/* ef would be NULL here if we removed the filter function
* in response to the event.
*/
if (ef != NULL)
ef->last_event_serial = ((XEvent*)xevent)->xany.serial;
return GDK_FILTER_CONTINUE;
}
}
static EventFunc *ef = NULL;
void
meta_ui_add_event_func (Display *xdisplay,
MetaEventFunc func,