mirror of
https://github.com/brl/mutter.git
synced 2024-11-21 23:50:41 -05:00
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
This commit is contained in:
parent
3e967d731a
commit
645d596f9d
@ -74,7 +74,7 @@ PangoFontMap *
|
|||||||
cogl_pango_font_map_new (void)
|
cogl_pango_font_map_new (void)
|
||||||
{
|
{
|
||||||
PangoFontMap *fm = pango_cairo_font_map_new ();
|
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);
|
_COGL_GET_CONTEXT (context, NULL);
|
||||||
|
|
||||||
@ -85,7 +85,7 @@ cogl_pango_font_map_new (void)
|
|||||||
* for now. */
|
* for now. */
|
||||||
g_object_set_qdata_full (G_OBJECT (fm),
|
g_object_set_qdata_full (G_OBJECT (fm),
|
||||||
cogl_pango_font_map_get_priv_key (),
|
cogl_pango_font_map_get_priv_key (),
|
||||||
priv,
|
g_steal_pointer (&priv),
|
||||||
free_priv);
|
free_priv);
|
||||||
|
|
||||||
return fm;
|
return fm;
|
||||||
|
@ -93,10 +93,12 @@ _cogl_onscreen_init_from_template (CoglOnscreen *onscreen,
|
|||||||
CoglOnscreen *
|
CoglOnscreen *
|
||||||
_cogl_onscreen_new (void)
|
_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);
|
_COGL_GET_CONTEXT (ctx, NULL);
|
||||||
|
|
||||||
|
onscreen = g_steal_pointer (&onscreen_ptr);
|
||||||
_cogl_framebuffer_init (COGL_FRAMEBUFFER (onscreen),
|
_cogl_framebuffer_init (COGL_FRAMEBUFFER (onscreen),
|
||||||
ctx,
|
ctx,
|
||||||
COGL_FRAMEBUFFER_TYPE_ONSCREEN,
|
COGL_FRAMEBUFFER_TYPE_ONSCREEN,
|
||||||
|
@ -50,7 +50,7 @@ struct _CoglPipelineCache
|
|||||||
CoglPipelineCache *
|
CoglPipelineCache *
|
||||||
_cogl_pipeline_cache_new (void)
|
_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 vertex_state;
|
||||||
unsigned long layer_vertex_state;
|
unsigned long layer_vertex_state;
|
||||||
unsigned int fragment_state;
|
unsigned int fragment_state;
|
||||||
@ -80,7 +80,7 @@ _cogl_pipeline_cache_new (void)
|
|||||||
layer_vertex_state | layer_fragment_state,
|
layer_vertex_state | layer_fragment_state,
|
||||||
"programs");
|
"programs");
|
||||||
|
|
||||||
return cache;
|
return g_steal_pointer (&cache);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
Loading…
Reference in New Issue
Block a user