Signed-off-by: Jean-Christophe DUBOIS <j...@tribudubois.net> --- src/core/layers.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/src/core/layers.c b/src/core/layers.c index 9d1d993..1e86425 100644 --- a/src/core/layers.c +++ b/src/core/layers.c @@ -154,8 +154,10 @@ dfb_layer_core_initialize( CoreDFB *core, if (size > 0) { lshared->layer_data = SHCALLOC( pool, 1, size ); - if (!lshared->layer_data) + if (!lshared->layer_data) { + SHFREE(pool, lshared); return D_OOSHM(); + } } } @@ -170,6 +172,8 @@ dfb_layer_core_initialize( CoreDFB *core, if (ret) { D_DERROR( ret, "DirectFB/Core/layers: " "Failed to initialize layer %d!\n", lshared->layer_id ); + SHFREE(pool, lshared->layer_data); + SHFREE(pool, lshared); return ret; } @@ -177,8 +181,11 @@ dfb_layer_core_initialize( CoreDFB *core, int n; lshared->sources = SHCALLOC( pool, lshared->description.sources, sizeof(CoreLayerSource) ); - if (!lshared->sources) + if (!lshared->sources) { + SHFREE(pool, lshared->layer_data); + SHFREE(pool, lshared); return D_OOSHM(); + } for (n=0; n<lshared->description.sources; n++) { CoreLayerSource *source = &lshared->sources[n]; @@ -190,6 +197,9 @@ dfb_layer_core_initialize( CoreDFB *core, if (ret) { D_DERROR( ret, "DirectFB/Core/layers: Failed to initialize source %d " "of layer %d!\n", n, lshared->layer_id ); + SHFREE(pool, lshared->sources); + SHFREE(pool, lshared->layer_data); + SHFREE(pool, lshared); return ret; } } -- 1.9.1 _______________________________________________ directfb-dev mailing list directfb-dev@directfb.org http://mail.directfb.org/cgi-bin/mailman/listinfo/directfb-dev