summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@php.net>2010-10-05 11:28:56 +0000
committerDmitry Stogov <dmitry@php.net>2010-10-05 11:28:56 +0000
commitbe89f9d922b2b370bd74ae3bbb4bf5721f8eac34 (patch)
treec45178d1b2323fa138ed71c9108de80d49035af6
parent01e081cfa7384d2d40a1a32e30437834834baf44 (diff)
downloadphp-git-be89f9d922b2b370bd74ae3bbb4bf5721f8eac34.tar.gz
Fixed bug #51008 (Zend/tests/bug45877.phpt fails)
-rw-r--r--NEWS1
-rw-r--r--Zend/zend_hash.h8
2 files changed, 5 insertions, 4 deletions
diff --git a/NEWS b/NEWS
index c00f86205a..5d1478adc9 100644
--- a/NEWS
+++ b/NEWS
@@ -15,6 +15,7 @@
- Fixed bug #52436 (Compile error if systems do not have stdint.h)
(Sriram Natarajan)
- Fixed bug #52390 (mysqli_report() should be per-request setting). (Kalle)
+- Fixed bug #51008 (Zend/tests/bug45877.phpt fails). (Dmitry)
22 Jul 2010, PHP 5.2.14
- Reverted bug fix #49521 (PDO fetchObject sets values before calling
diff --git a/Zend/zend_hash.h b/Zend/zend_hash.h
index 0d8f5fe976..c4b963e2a7 100644
--- a/Zend/zend_hash.h
+++ b/Zend/zend_hash.h
@@ -306,7 +306,7 @@ END_EXTERN_C()
} \
if (*tmp >= '0' && *tmp <= '9') { /* possibly a numeric index */ \
const char *end = key + length - 1; \
- long idx; \
+ ulong idx; \
\
if ((*end != '\0') /* not a null terminated string */ \
|| (*tmp == '0' && length > 2) /* numbers with leading zeros */ \
@@ -322,11 +322,11 @@ END_EXTERN_C()
} \
if (tmp == end) { \
if (*key == '-') { \
- idx = -idx; \
- if (idx > 0) { /* overflow */ \
+ if (idx-1 > LONG_MAX) { /* overflow */ \
break; \
} \
- } else if (idx < 0) { /* overflow */ \
+ idx = (ulong)(-(long)idx); \
+ } else if (idx > LONG_MAX) { /* overflow */ \
break; \
} \
return func; \