From 6a586e892940b34ee02ff94732fa3d9abe61cbab Mon Sep 17 00:00:00 2001 From: Thomas Thurman Date: Sat, 29 Mar 2008 21:29:57 +0000 Subject: [PATCH] prevent null dereference if the theme was invalid, which caused crashes in 2008-03-29 Thomas Thurman * src/ui/preview-widget.c (meta_preview_get_clip_region): prevent null dereference if the theme was invalid, which caused crashes in gnome-appearance-properties. No GNOME bug number, but I believe this is a fix for Launchpad bug #199402 and its many duplicates. svn path=/trunk/; revision=3668 --- ChangeLog | 8 ++++++++ src/ui/preview-widget.c | 21 +++++++++++++-------- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index 40bc01206..c86d749cd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2008-03-29 Thomas Thurman + + * src/ui/preview-widget.c (meta_preview_get_clip_region): + prevent null dereference if the theme was invalid, which + caused crashes in gnome-appearance-properties. No GNOME + bug number, but I believe this is a fix for Launchpad bug + #199402 and its many duplicates. + 2008-03-28 Owen Taylor * src/core/window.c (meta_window_new_with_attrs): Don't diff --git a/src/ui/preview-widget.c b/src/ui/preview-widget.c index c0ac6d742..4d2f9a2e4 100644 --- a/src/ui/preview-widget.c +++ b/src/ui/preview-widget.c @@ -478,6 +478,19 @@ meta_preview_get_clip_region (MetaPreview *preview, gint new_window_width, gint flags = (META_PREVIEW (preview)->flags); + window_xregion = gdk_region_new (); + + xrect.x = 0; + xrect.y = 0; + xrect.width = new_window_width; + xrect.height = new_window_height; + + gdk_region_union_with_rect (window_xregion, &xrect); + + if (preview->theme == NULL) + return window_xregion; + + /* Otherwise, we do have a theme, so calculate the corners */ frame_style = meta_theme_get_frame_style (preview->theme, META_FRAME_TYPE_NORMAL, flags); @@ -558,14 +571,6 @@ meta_preview_get_clip_region (MetaPreview *preview, gint new_window_width, gint } } - window_xregion = gdk_region_new (); - - xrect.x = 0; - xrect.y = 0; - xrect.width = new_window_width; - xrect.height = new_window_height; - - gdk_region_union_with_rect (window_xregion, &xrect); gdk_region_subtract (window_xregion, corners_xregion); gdk_region_destroy (corners_xregion);