diff options
| -rw-r--r-- | php_imlib.c | 13 |
1 files changed, 10 insertions, 3 deletions
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); } /* }}} */ |
