]> granicus.if.org Git - php/commitdiff
Fixed retval for ps_call_handler
authorXinchen Hui <laruence@gmail.com>
Sat, 29 Mar 2014 12:17:59 +0000 (20:17 +0800)
committerXinchen Hui <laruence@gmail.com>
Sat, 29 Mar 2014 12:17:59 +0000 (20:17 +0800)
ext/session/mod_user.c

index 4e42a1ba142fa39108b63e92b0654a75774db880..2b4e79996f6d26cd9c6bc1125fc5db87c497de41 100644 (file)
@@ -50,7 +50,12 @@ ps_module ps_mod_user = {
 static void ps_call_handler(zval *func, int argc, zval *argv, zval *retval TSRMLS_DC)
 {
        int i;
-       call_user_function(EG(function_table), NULL, func, retval, argc, argv TSRMLS_CC);
+       if (call_user_function(EG(function_table), NULL, func, retval, argc, argv TSRMLS_CC) == FAILURE) {
+               zval_ptr_dtor(retval);
+               ZVAL_UNDEF(retval);
+       } else if (ZVAL_IS_UNDEF(retval)) {
+               ZVAL_NULL(retval);
+       }
        for (i = 0; i < argc; i++) {
                zval_ptr_dtor(&argv[i]);
        }