diff options
author | Marco Trevisan (TreviƱo) <mail@3v1n0.net> | 2019-07-09 11:13:09 +0200 |
---|---|---|
committer | Robert Mader <robert.mader@posteo.de> | 2020-04-12 21:40:20 +0000 |
commit | 645d596f9d39e26c239a307fa699f11eeb921e18 (patch) | |
tree | 26ce18cd3f20c461bff6df42769be22a17788c0d /cogl | |
parent | 3e967d731a730cb4afb46f115570bb25f54c4195 (diff) | |
download | mutter-645d596f9d39e26c239a307fa699f11eeb921e18.tar.gz |
cogl: Use autopointers to free structs on return
This is a potential leak discovered by static analysis, in fact if
_COGL_GET_CONTEXT returns, the newly allocated struct isn't released.
https://gitlab.gnome.org/GNOME/mutter/merge_requests/1195
Diffstat (limited to 'cogl')
-rw-r--r-- | cogl/cogl-pango/cogl-pango-fontmap.c | 4 | ||||
-rw-r--r-- | cogl/cogl/cogl-onscreen.c | 4 | ||||
-rw-r--r-- | cogl/cogl/cogl-pipeline-cache.c | 4 |
3 files changed, 7 insertions, 5 deletions
diff --git a/cogl/cogl-pango/cogl-pango-fontmap.c b/cogl/cogl-pango/cogl-pango-fontmap.c index 0c43909c7..714ba6546 100644 --- a/cogl/cogl-pango/cogl-pango-fontmap.c +++ b/cogl/cogl-pango/cogl-pango-fontmap.c @@ -74,7 +74,7 @@ PangoFontMap * cogl_pango_font_map_new (void) { PangoFontMap *fm = pango_cairo_font_map_new (); - CoglPangoFontMapPriv *priv = g_new0 (CoglPangoFontMapPriv, 1); + g_autofree CoglPangoFontMapPriv *priv = g_new0 (CoglPangoFontMapPriv, 1); _COGL_GET_CONTEXT (context, NULL); @@ -85,7 +85,7 @@ cogl_pango_font_map_new (void) * for now. */ g_object_set_qdata_full (G_OBJECT (fm), cogl_pango_font_map_get_priv_key (), - priv, + g_steal_pointer (&priv), free_priv); return fm; diff --git a/cogl/cogl/cogl-onscreen.c b/cogl/cogl/cogl-onscreen.c index 1bd1d5911..704e1c44b 100644 --- a/cogl/cogl/cogl-onscreen.c +++ b/cogl/cogl/cogl-onscreen.c @@ -93,10 +93,12 @@ _cogl_onscreen_init_from_template (CoglOnscreen *onscreen, CoglOnscreen * _cogl_onscreen_new (void) { - CoglOnscreen *onscreen = g_new0 (CoglOnscreen, 1); + g_autofree CoglOnscreen *onscreen_ptr = g_new0 (CoglOnscreen, 1); + CoglOnscreen *onscreen; _COGL_GET_CONTEXT (ctx, NULL); + onscreen = g_steal_pointer (&onscreen_ptr); _cogl_framebuffer_init (COGL_FRAMEBUFFER (onscreen), ctx, COGL_FRAMEBUFFER_TYPE_ONSCREEN, diff --git a/cogl/cogl/cogl-pipeline-cache.c b/cogl/cogl/cogl-pipeline-cache.c index 216add80f..6bfc37732 100644 --- a/cogl/cogl/cogl-pipeline-cache.c +++ b/cogl/cogl/cogl-pipeline-cache.c @@ -50,7 +50,7 @@ struct _CoglPipelineCache CoglPipelineCache * _cogl_pipeline_cache_new (void) { - CoglPipelineCache *cache = g_new (CoglPipelineCache, 1); + g_autofree CoglPipelineCache *cache = g_new (CoglPipelineCache, 1); unsigned long vertex_state; unsigned long layer_vertex_state; unsigned int fragment_state; @@ -80,7 +80,7 @@ _cogl_pipeline_cache_new (void) layer_vertex_state | layer_fragment_state, "programs"); - return cache; + return g_steal_pointer (&cache); } void |