summaryrefslogtreecommitdiff
path: root/ext/spl/spl_engine.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/spl/spl_engine.c')
-rw-r--r--ext/spl/spl_engine.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/ext/spl/spl_engine.c b/ext/spl/spl_engine.c
index a2f3653432..0cfcb8ee18 100644
--- a/ext/spl/spl_engine.c
+++ b/ext/spl/spl_engine.c
@@ -42,9 +42,13 @@ PHPAPI void spl_instantiate(zend_class_entry *pce, zval *object TSRMLS_DC)
PHPAPI long spl_offset_convert_to_long(zval *offset TSRMLS_DC) /* {{{ */
{
+ ulong idx;
+
switch (Z_TYPE_P(offset)) {
case IS_STRING:
- ZEND_HANDLE_NUMERIC(Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, idx);
+ if (ZEND_HANDLE_NUMERIC(Z_STR_P(offset), idx)) {
+ return idx;
+ }
break;
case IS_DOUBLE:
return (long)Z_DVAL_P(offset);