summaryrefslogtreecommitdiff
path: root/ext/dom/php_dom.c
diff options
context:
space:
mode:
authorTjerk Meesters <datibbaw@php.net>2014-10-12 12:55:24 +0800
committerTjerk Meesters <datibbaw@php.net>2014-10-12 12:55:24 +0800
commitea7604fc9e481318d9219bcc8b29125079965895 (patch)
tree196d3cdad28f1758bfd06e92339b565de17368ff /ext/dom/php_dom.c
parente33e4b2d8c44fb04afc54f688ed44dce7e8a2e0f (diff)
parent37a685ff2bed7bda213c53604ad8cc6dc470751c (diff)
downloadphp-git-ea7604fc9e481318d9219bcc8b29125079965895.tar.gz
Merge branch 'PHP-5.6'
* PHP-5.6: More fixes for nodelist array access - testing for null property read - no zval copying if the type is already long - memory fix for master - use zend_long for offset Conflicts: ext/dom/php_dom.c
Diffstat (limited to 'ext/dom/php_dom.c')
-rw-r--r--ext/dom/php_dom.c21
1 files changed, 7 insertions, 14 deletions
diff --git a/ext/dom/php_dom.c b/ext/dom/php_dom.c
index 71c06612db..c25cbaba58 100644
--- a/ext/dom/php_dom.c
+++ b/ext/dom/php_dom.c
@@ -1552,8 +1552,7 @@ zval *dom_nodelist_read_dimension(zval *object, zval *offset, int type, zval *rv
return NULL;
}
- ZVAL_COPY(&offset_copy, offset);
- convert_to_long(&offset_copy);
+ ZVAL_LONG(&offset_copy, zval_get_long(offset));
zend_call_method_with_1_params(object, Z_OBJCE_P(object), NULL, "item", rv, &offset_copy);
@@ -1562,21 +1561,15 @@ zval *dom_nodelist_read_dimension(zval *object, zval *offset, int type, zval *rv
int dom_nodelist_has_dimension(zval *object, zval *member, int check_empty TSRMLS_DC)
{
- zval *length, offset_copy;
- int ret;
-
- ZVAL_COPY(&offset_copy, member);
- convert_to_long(&offset_copy);
+ zend_long offset = zval_get_long(member);
- if (Z_LVAL(offset_copy) < 0) {
+ if (offset < 0) {
return 0;
- }
-
- length = zend_read_property(Z_OBJCE_P(object), object, "length", sizeof("length") - 1, 0 TSRMLS_CC);
-
- ret = Z_LVAL(offset_copy) < Z_LVAL_P(length);
+ } else {
+ zval *length = zend_read_property(Z_OBJCE_P(object), object, "length", sizeof("length") - 1, 0 TSRMLS_CC);
- return ret;
+ return length && offset < Z_LVAL_P(length);
+ }
} /* }}} end dom_nodelist_has_dimension */
#endif /* HAVE_DOM */