diff options
| author | Victor Kareh <[email protected]> | 2019-05-22 11:20:31 -0400 | 
|---|---|---|
| committer | Victor Kareh <[email protected]> | 2019-06-05 10:49:37 -0400 | 
| commit | 43a58511565f293653f98e0dc77f240bd4d5e10f (patch) | |
| tree | 98250dbe72856b8a79dccf2f7c6fe7e164dc857c /src | |
| parent | bfafcf554cda8b3f2c4e35aec3fbc033d63f8bba (diff) | |
| download | marco-43a58511565f293653f98e0dc77f240bd4d5e10f.tar.bz2 marco-43a58511565f293653f98e0dc77f240bd4d5e10f.tar.xz | |
constraints: fix mem leak in meta_window_constrain()
MetaFrameBorders leaked when orig_borders != NULL and
window->fullscreen == TRUE
https://bugzilla.gnome.org/show_bug.cgi?id=679153
upstream commit:
https://gitlab.gnome.org/GNOME/metacity/commit/7e7f25f4
Diffstat (limited to 'src')
| -rw-r--r-- | src/core/constraints.c | 13 | 
1 files changed, 10 insertions, 3 deletions
| diff --git a/src/core/constraints.c b/src/core/constraints.c index 8f7e0d7e..c886d927 100644 --- a/src/core/constraints.c +++ b/src/core/constraints.c @@ -118,6 +118,7 @@ typedef struct    MetaRectangle        orig;    MetaRectangle        current;    MetaFrameBorders    *borders; +  gboolean             must_free_borders;    ActionType           action_type;    gboolean             is_user_action; @@ -339,7 +340,7 @@ meta_window_constrain (MetaWindow          *window,     * not gobject-style--gobject would be more pain than it's worth) or     * smart pointers would be so much nicer here.  *shrug*     */ -  if (!orig_borders) +  if (info.must_free_borders)      g_free (info.borders);  } @@ -360,9 +361,15 @@ setup_constraint_info (ConstraintInfo      *info,    /* Create a fake frame geometry if none really exists */    if (orig_borders && !window->fullscreen) -    info->borders = orig_borders; +    { +      info->borders = orig_borders; +      info->must_free_borders = FALSE; +    }    else -    info->borders = g_new0 (MetaFrameBorders, 1); +    { +      info->borders = g_new0 (MetaFrameBorders, 1); +      info->must_free_borders = TRUE; +    }    if (flags & META_IS_MOVE_ACTION && flags & META_IS_RESIZE_ACTION)      info->action_type = ACTION_MOVE_AND_RESIZE; | 
