com php-src: Treat "+0" and "-0" as valid integers just like var_dump() does.: ext/filter/logical_filters. c ext/filter/tests/filter_data.phpt
| From: | Lars Strojny | Date: | Sat, 29 Dec 2012 02:31:13 +0000 |
| Subject: | com php-src: Treat "+0" and "-0" as valid integers just like var_dump() does.: ext/filter/logical_filters. c ext/filter/tests/filter_data.phpt | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-70831@lists.php.net to get a copy of this message | ||
Commit: 3990641e62b5648965883604e286b64e098b351e
Author: Martin Jansen <martin@divbyzero.net> Mon, 24 Dec 2012 14:58:01 +0100
Committer: Lars Strojny <lstrojny@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)