diff options
| author | Xinchen Hui <laruence@php.net> | 2012-03-02 02:51:57 +0000 |
|---|---|---|
| committer | Xinchen Hui <laruence@php.net> | 2012-03-02 02:51:57 +0000 |
| commit | 0e4d46a3a7c89e831b9944dfa04e69b4c7d1b876 (patch) | |
| tree | 7cd89e7584815f979022dd648237f8a40fd349e4 /Zend/zend_API.c | |
| parent | f7cd0588a907bb3e13e8f32ff8a1aab6b4671c23 (diff) | |
| download | php-git-0e4d46a3a7c89e831b9944dfa04e69b4c7d1b876.tar.gz | |
MFH: Fix bug #61165 (Segfault - strip_tags())
Diffstat (limited to 'Zend/zend_API.c')
| -rw-r--r-- | Zend/zend_API.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/Zend/zend_API.c b/Zend/zend_API.c index e6560b224b..1c608a7a30 100644 --- a/Zend/zend_API.c +++ b/Zend/zend_API.c @@ -262,12 +262,16 @@ ZEND_API int zend_get_object_classname(const zval *object, const char **class_na static int parse_arg_object_to_string(zval **arg, char **p, int *pl, int type TSRMLS_DC) /* {{{ */ { if (Z_OBJ_HANDLER_PP(arg, cast_object)) { - SEPARATE_ZVAL_IF_NOT_REF(arg); - if (Z_OBJ_HANDLER_PP(arg, cast_object)(*arg, *arg, type TSRMLS_CC) == SUCCESS) { + zval *obj; + MAKE_STD_ZVAL(obj); + if (Z_OBJ_HANDLER_P(*arg, cast_object)(*arg, obj, type TSRMLS_CC) == SUCCESS) { + zval_ptr_dtor(arg); + *arg = obj; *pl = Z_STRLEN_PP(arg); *p = Z_STRVAL_PP(arg); return SUCCESS; } + efree(obj); } /* Standard PHP objects */ if (Z_OBJ_HT_PP(arg) == &std_object_handlers || !Z_OBJ_HANDLER_PP(arg, cast_object)) { |
