summaryrefslogtreecommitdiff
path: root/cogl
diff options
context:
space:
mode:
authorMarco Trevisan (TreviƱo) <mail@3v1n0.net>2019-07-09 11:13:09 +0200
committerRobert Mader <robert.mader@posteo.de>2020-04-12 21:40:20 +0000
commit645d596f9d39e26c239a307fa699f11eeb921e18 (patch)
tree26ce18cd3f20c461bff6df42769be22a17788c0d /cogl
parent3e967d731a730cb4afb46f115570bb25f54c4195 (diff)
downloadmutter-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.c4
-rw-r--r--cogl/cogl/cogl-onscreen.c4
-rw-r--r--cogl/cogl/cogl-pipeline-cache.c4
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