- fixed resource freeing

pp [2005-07-13 16:01:56]
- fixed resource freeing


git-svn-id: https://siedziba.pl:790/svn/repos/php-imlib/trunk@209 455248ca-bdda-0310-9134-f4ebb693071a
Filename
php_imlib.c
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);
 }
 /* }}} */
ViewGit