Signed-off-by: Jean-Christophe DUBOIS <[email protected]>
---
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
[email protected]
http://mail.directfb.org/cgi-bin/mailman/listinfo/directfb-dev