Commit:    3990641e62b5648965883604e286b64e098b351e
Author:    Martin Jansen <mar...@divbyzero.net>         Mon, 24 Dec 2012 
14:58:01 +0100
Committer: Lars Strojny <lstro...@php.net>      Sat, 29 Dec 2012 03:31:13 +0100
Parents:   ac3d227e28056bf5294a8a64e2f41ce2beebaa05
Branches:  PHP-5.4

Link:       
http://git.php.net/?p=php-src.git;a=commitdiff;h=3990641e62b5648965883604e286b64e098b351e

Log:
Treat "+0" and "-0" as valid integers just like var_dump() does.

This fixes bug #54096.

Bugs:
https://bugs.php.net/54096

Changed paths:
  M  ext/filter/logical_filters.c
  M  ext/filter/tests/filter_data.phpt


Diff:
diff --git a/ext/filter/logical_filters.c b/ext/filter/logical_filters.c
index 4de6b83..c03c698 100644
--- a/ext/filter/logical_filters.c
+++ b/ext/filter/logical_filters.c
@@ -80,6 +80,11 @@ static int php_filter_parse_int(const char *str, unsigned 
int str_len, long *ret
                        break;
        }
 
+       if (*str == '0' && str + 1 == end) {
+               /* Special cases: +0 and -0 */
+               return 1;
+       }
+
        /* must start with 1..9*/
        if (str < end && *str >= '1' && *str <= '9') {
                ctx_value = ((sign)?-1:1) * ((*(str++)) - '0');
diff --git a/ext/filter/tests/filter_data.phpt 
b/ext/filter/tests/filter_data.phpt
index 1071b3e..5e3b82a 100644
--- a/ext/filter/tests/filter_data.phpt
+++ b/ext/filter/tests/filter_data.phpt
@@ -10,6 +10,8 @@ precision=14
 /* Integer */
 $data = "-123";   var_dump(filter_var($data, FILTER_VALIDATE_INT));
 $data = "0";      var_dump(filter_var($data, FILTER_VALIDATE_INT));
+$data = "-0";     var_dump(filter_var($data, FILTER_VALIDATE_INT));
+$data = "+0";     var_dump(filter_var($data, FILTER_VALIDATE_INT));
 $data = "123";    var_dump(filter_var($data, FILTER_VALIDATE_INT));
 $data = -123;     var_dump(filter_var($data, FILTER_VALIDATE_INT));
 $data = 0;        var_dump(filter_var($data, FILTER_VALIDATE_INT));
@@ -46,6 +48,8 @@ $data = "";       var_dump(filter_var($data, 
FILTER_VALIDATE_BOOLEAN));
 --EXPECT--
 int(-123)
 int(0)
+int(0)
+int(0)
 int(123)
 int(-123)
 int(0)


--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to