- fixed resource freeing
- fixed resource freeing
git-svn-id: https://siedziba.pl:790/svn/repos/php-imlib/trunk@209 455248ca-bdda-0310-9134-f4ebb693071a
diff --git a/php_imlib.c b/php_imlib.c
index 07a3e0a..0d437d9 100644
--- a/php_imlib.c
+++ b/php_imlib.c
@@ -212,7 +212,8 @@ PHP_INI_MH(OnUpdateFontCacheSize)
static void _php_imlib_free_cm(zend_rsrc_list_entry *rsrc TSRMLS_DC)
{
- imlib_context_set_color_modifier(rsrc->ptr);
+ imlib_context_set_color_modifier(((PHP_Imlib_Color_Modifier)rsrc->ptr)->cm);
+ efree(rsrc->ptr);
imlib_free_color_modifier();
}
@@ -230,7 +231,8 @@ static void _php_imlib_free_cr(zend_rsrc_list_entry *rsrc TSRMLS_DC)
static void _php_imlib_free_font(zend_rsrc_list_entry *rsrc TSRMLS_DC)
{
- imlib_context_set_font(rsrc->ptr);
+ imlib_context_set_font(((PHP_Imlib_Font)rsrc->ptr)->font);
+ efree(rsrc->ptr);
imlib_free_font();
}
@@ -1106,8 +1108,13 @@ PHP_FUNCTION(imlib_create_color_modifier)
cm->cm = imlib_create_color_modifier();
cm->modified=0;
cm->valid=0;
+
+ if (!cm->cm) {
+ efree(cm);
+ RETURN_FALSE;
+ }
- if (cm->cm) ZEND_REGISTER_RESOURCE(return_value, cm, le_imlib_cm);
+ ZEND_REGISTER_RESOURCE(return_value, cm, le_imlib_cm);
}
/* }}} */