diff --git a/ChangeLog b/ChangeLog index b531569a8..c622fae86 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2008-04-29 Chris Wang + + * src/core/window.c (meta_window_new): XGetWindowAttributes + can return an error value, and if it does its other results + are invalid! (#530485) + 2008-04-29 Thomas Thurman * src/ui/fixedtip.[ch]: documentation diff --git a/src/core/window.c b/src/core/window.c index d1c32daf1..90997a838 100644 --- a/src/core/window.c +++ b/src/core/window.c @@ -206,21 +206,30 @@ meta_window_new (MetaDisplay *display, meta_error_trap_push_with_return (display); - XGetWindowAttributes (display->xdisplay, - xwindow, &attrs); - - if (meta_error_trap_pop_with_return (display, TRUE) != Success) - { - meta_verbose ("Failed to get attributes for window 0x%lx\n", - xwindow); - meta_error_trap_pop (display, TRUE); - meta_display_ungrab (display); - return NULL; - } - window = meta_window_new_with_attrs (display, xwindow, + if (XGetWindowAttributes (display->xdisplay,xwindow, &attrs)) + { + if(meta_error_trap_pop_with_return (display, TRUE) != Success) + { + meta_verbose ("Failed to get attributes for window 0x%lx\n", + xwindow); + meta_error_trap_pop (display, TRUE); + meta_display_ungrab (display); + return NULL; + } + window = meta_window_new_with_attrs (display, xwindow, must_be_viewable, &attrs); - - + } + else + { + meta_error_trap_pop_with_return (display, TRUE); + meta_verbose ("Failed to get attributes for window 0x%lx\n", + xwindow); + meta_error_trap_pop (display, TRUE); + meta_display_ungrab (display); + return NULL; + } + + meta_error_trap_pop (display, FALSE); meta_display_ungrab (display);