summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Strojny <lstrojny@php.net>2012-12-29 03:36:06 +0100
committerLars Strojny <lstrojny@php.net>2012-12-29 03:36:06 +0100
commitf8a9a47e8cde62a082a54371c08eedb4c1366b77 (patch)
treebcf4a2db92a8714e56b4a47beae51a581e69b473
parent722b8fb80eb3a4a5f8fa5e8dd91456148e1f755a (diff)
parentee258fe87dd3dd61d0a806e22055d7a4bb574a0c (diff)
downloadphp-git-f8a9a47e8cde62a082a54371c08eedb4c1366b77.tar.gz
Merge branch 'PHP-5.4' into PHP-5.5
-rw-r--r--ext/filter/logical_filters.c5
-rw-r--r--ext/filter/tests/filter_data.phpt8
2 files changed, 13 insertions, 0 deletions
diff --git a/ext/filter/logical_filters.c b/ext/filter/logical_filters.c
index 4de6b83e00..c03c698700 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 1071b3efae..f83d98625c 100644
--- a/ext/filter/tests/filter_data.phpt
+++ b/ext/filter/tests/filter_data.phpt
@@ -10,9 +10,13 @@ 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));
+$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 = ""; var_dump(filter_var($data, FILTER_VALIDATE_INT));
echo "\n";
@@ -46,9 +50,13 @@ $data = ""; var_dump(filter_var($data, FILTER_VALIDATE_BOOLEAN));
--EXPECT--
int(-123)
int(0)
+int(0)
+int(0)
int(123)
int(-123)
int(0)
+int(0)
+int(0)
int(123)
bool(false)