]> granicus.if.org Git - php/commitdiff
- MFH Handle NULL in C argument parsing correct
authorMarcus Boerger <helly@php.net>
Tue, 23 May 2006 22:22:11 +0000 (22:22 +0000)
committerMarcus Boerger <helly@php.net>
Tue, 23 May 2006 22:22:11 +0000 (22:22 +0000)
Zend/zend_API.c

index 26c2dc23df78d66d4a650f52f66d73aed9aca4a3..2cd889932c3b402cc146dd6b7eea260fb8bb6194 100644 (file)
@@ -514,6 +514,10 @@ static char *zend_parse_arg_impl(int arg_num, zval **arg, va_list *va, char **sp
                                zend_class_entry **lookup, **pce = va_arg(*va, zend_class_entry **);
                                zend_class_entry *ce_base = *pce;
 
+                               if (return_null && Z_TYPE_PP(arg) == IS_NULL) {
+                                       *pce = NULL;
+                                       break;
+                               }
                                convert_to_string_ex(arg);
                                if (zend_lookup_class(Z_STRVAL_PP(arg), Z_STRLEN_PP(arg), &lookup TSRMLS_CC) == FAILURE) {
                                        *pce = NULL;
@@ -531,7 +535,7 @@ static char *zend_parse_arg_impl(int arg_num, zval **arg, va_list *va, char **sp
                                                return "";
                                        }
                                }
-                               if (!*pce && !return_null) {
+                               if (!*pce) {
                                        char *space;
                                        char *class_name = get_active_class_name(&space TSRMLS_CC);
                                        zend_error(E_WARNING, "%s%s%s() expects parameter %d to be a valid class name, '%s' given",