]> granicus.if.org Git - php/commitdiff
- MFH: pecl bug #8316,
authorPierre Joye <pajoye@php.net>
Thu, 31 Aug 2006 18:29:29 +0000 (18:29 +0000)
committerPierre Joye <pajoye@php.net>
Thu, 31 Aug 2006 18:29:29 +0000 (18:29 +0000)
  empty strings are not int or float, return false (due to popular demand)

ext/filter/logical_filters.c
ext/filter/tests/010.phpt
ext/filter/tests/013.phpt
ext/filter/tests/filter_data.phpt

index 0ce72313d1719ab509080066e0040c9ad9bbec67..ddb91dbb74ea980d11af4c2f7f44b69cc077533e 100644 (file)
@@ -173,6 +173,14 @@ void php_filter_int(PHP_INPUT_FILTER_PARAM_DECL) /* {{{ */
        FETCH_LONG_OPTION(max_range,    "max_range");
        FETCH_LONG_OPTION(option_flags, "flags");
 
+       len = Z_STRLEN_P(value);
+
+       if (len == 0) {
+               zval_dtor(value);
+               ZVAL_BOOL(value, 0);
+               return;
+       }
+
        if (option_flags_set && (option_flags & FILTER_FLAG_ALLOW_OCTAL)) {
                allow_octal = 1;
        }
@@ -181,21 +189,6 @@ void php_filter_int(PHP_INPUT_FILTER_PARAM_DECL) /* {{{ */
                allow_hex = 1;
        }
 
-       len = Z_STRLEN_P(value);
-
-       if (len == 0) {
-               if ((min_range_set && (0 < min_range)) || (max_range_set && (0 > max_range))) {
-                       zval_dtor(value);
-                       ZVAL_BOOL(value, 0);
-                       return;
-               } else {
-                       zval_dtor(value);
-                       Z_TYPE_P(value) = IS_LONG;
-                       Z_LVAL_P(value) = 0;
-                       return;
-               }
-       }
-
        /* Start the validating loop */
        p = Z_STRVAL_P(value);
        ctx_value = 0;
@@ -245,6 +238,7 @@ void php_filter_boolean(PHP_INPUT_FILTER_PARAM_DECL) /* {{{ */
        } else {
                zval_dtor(value);
                ZVAL_BOOL(value, 0);
+               return;
        }
 
        /* returns true for "1", "true", "on" and "yes"
@@ -292,8 +286,7 @@ void php_filter_float(PHP_INPUT_FILTER_PARAM_DECL) /* {{{ */
 
        if (len < 1) {
                zval_dtor(value);
-               Z_TYPE_P(value) = IS_DOUBLE;
-               Z_DVAL_P(value) = 0;
+               ZVAL_BOOL(value, 0);
                return;
        }
 
index eaded25b65e87d796b6d1f8271d1cd98fe976008..c78acd6779e2eeef2882cb5361dd6e72dc4ff13f 100644 (file)
@@ -21,7 +21,7 @@ array(7) {
   [1]=>
   int(1)
   [2]=>
-  int(0)
+  bool(false)
   [3]=>
   int(-23234)
   [4]=>
@@ -38,7 +38,7 @@ array(7) {
   [1]=>
   float(1.7)
   [2]=>
-  float(0)
+  bool(false)
   [3]=>
   float(-23234.123)
   [4]=>
index 696d3218987509ecf5e6aba9111add831d75c094..6c755c78b797f512dc9324facbda8997d709d184 100644 (file)
@@ -63,7 +63,7 @@ int(6)
 bool(false)
 bool(false)
 int(-1)
-int(0)
+bool(false)
 bool(false)
 bool(false)
 bool(false)
index e907d020935837933e234aa790837932ea2aa26a..2fdd823438211d065bfc6c5afa2ef0c41dacd850 100644 (file)
@@ -46,7 +46,7 @@ int(123)
 int(-123)
 int(0)
 int(123)
-int(0)
+bool(false)
 
 float(-0.123)
 float(0)
@@ -54,7 +54,7 @@ float(1.23)
 float(-1.23)
 float(0)
 float(1.23)
-float(0)
+bool(false)
 
 bool(true)
 bool(false)