com php-src: Merge branch 'master' into phpng: .travis.yml ext/opcache/Optimizer/pass1_5.c ext/opcache/ZendAccel erator.h ext/opcache/zend_persist.c
ext/spl/spl_arr ay.c ext/standard/iptc.c ext/standard/uuencode.c

From: Date: Sun, 18 May 2014 17:17:31 +0000
Subject: com php-src: Merge branch 'master' into phpng: .travis.yml ext/opcache/Optimizer/pass1_5.c ext/opcache/ZendAccel erator.h ext/opcache/zend_persist.c
ext/spl/spl_arr ay.c ext/standard/iptc.c ext/standard/uuencode.c
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-78450@lists.php.net to get a copy of this message
Commit: b11a30f5eaeae2aa797ebef8722f4b1d51c72198 Author: Dmitry Stogov <dmitry@zend.com> Sun, 18 May 2014 21:17:31 +0400 Parents: 583bb6339b03ac64ab38dee792e4aedeaa7d5f07 91c475fc0094fb23a8f94408684e0c21e195bf48 Branches: phpng Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=b11a30f5eaeae2aa797ebef8722f4b1d51c72198 Log: Merge branch 'master' into phpng * master: Support for __debugInfo (Joe Watkins) Optimize ZEND_POW (Rouven Weßling) gcov: tentative fix for broken coverage data after fix for opcache coverage slightly hackish, but works. The idea is that we want to give priority to .gcda files in .libs dirs vs the files in the upper level dir gcov: tentative fix for broken coverage data after fix for opcache coverage slightly hackish, but works. The idea is that we want to give priority to .gcda files in .libs dirs vs the files in the upper level dir Prevent recursion in ZF2 Parameters class adding NEWS block for beta4 5.4.30 next enable email notifications update NEWS update NEWS update NEWS - Updated to version 2014.3 (2014c) fix bug #67253: timelib_meridian_with_check out-of-bounds read Fix bug #67252: convert_uudecode out-of-bounds read Fix bug #67251 - date_parse_from_format out-of-bounds read Fix bug #67250 (iptcparse out-of-bounds read) Conflicts: ext/opcache/zend_persist.c ext/spl/spl_array.c Bugs: https://bugs.php.net/67253 https://bugs.php.net/67252 https://bugs.php.net/67251 https://bugs.php.net/67250 Changed paths: MM .travis.yml MM ext/opcache/Optimizer/pass1_5.c MM ext/opcache/ZendAccelerator.h MM ext/opcache/zend_persist.c MM ext/spl/spl_array.c MM ext/standard/iptc.c MM ext/standard/uuencode.c Diff: diff --cc .travis.yml index f661807,5b49434..6973f48 --- a/.travis.yml +++ b/.travis.yml @@@ -4,12 -4,9 +4,13 @@@ php # We only specify one version so we only get one worker - 5.4 +branches: + except: + - phpng + notifications: - email: false + email: + on_failure: change env: global: diff --cc ext/spl/spl_array.c index f830044,1fe795c..5c873f3 --- a/ext/spl/spl_array.c +++ b/ext/spl/spl_array.c @@@ -622,29 -591,27 +622,29 @@@ static void spl_array_unset_dimension(z static int spl_array_has_dimension_ex(int check_inherited, zval *object, zval *offset, int check_empty TSRMLS_DC) /* {{{ */ { - spl_array_object *intern = (spl_array_object*)zend_object_store_get_object(object TSRMLS_CC); + spl_array_object *intern = Z_SPLARRAY_P(object); long index; - zval *rv, *value = NULL, **tmp; + zval rv, *value = NULL, *tmp; if (check_inherited && intern->fptr_offset_has) { - zval *offset_tmp = offset; - SEPARATE_ARG_IF_REF(offset_tmp); - zend_call_method_with_1_params(&object, Z_OBJCE_P(object), &intern->fptr_offset_has, "offsetExists", &rv, offset_tmp); - zval_ptr_dtor(&offset_tmp); +//??? zval offset_tmp; +//??? ZVAL_COPY_VALUE(&offset_tmp, offset); +//??? SEPARATE_ARG_IF_REF(&offset_tmp); +//??? zend_call_method_with_1_params(object, Z_OBJCE_P(object), &intern->fptr_offset_has, "offsetExists", &rv, &offset_tmp); +//??? zval_ptr_dtor(&offset_tmp); + SEPARATE_ARG_IF_REF(offset); + zend_call_method_with_1_params(object, Z_OBJCE_P(object), &intern->fptr_offset_has, "offsetExists", &rv, offset); + zval_ptr_dtor(offset); - if (rv && zend_is_true(rv TSRMLS_CC)) { + if (!Z_ISUNDEF(rv) && zend_is_true(&rv TSRMLS_CC)) { zval_ptr_dtor(&rv); - if (check_empty == 2) { + if (check_empty != 1) { return 1; } else if (intern->fptr_offset_get) { - value = spl_array_read_dimension_ex(1, object, offset, BP_VAR_R TSRMLS_CC); + value = spl_array_read_dimension_ex(1, object, offset, BP_VAR_R, &rv TSRMLS_CC); } } else { - if (rv) { - zval_ptr_dtor(&rv); - } + zval_ptr_dtor(&rv); return 0; } } @@@ -662,22 -629,17 +662,23 @@@ return 0; } break; + case IS_DOUBLE: + index = (long)Z_DVAL_P(offset); + goto num_index; case IS_RESOURCE: - case IS_BOOL: + index = Z_RES_HANDLE_P(offset); + goto num_index; + case IS_FALSE: + index = 0; + goto num_index; + case IS_TRUE: + index = 1; + goto num_index; case IS_LONG: - if (offset->type == IS_DOUBLE) { - index = (long)Z_DVAL_P(offset); - } else { - index = Z_LVAL_P(offset); - } - if (zend_hash_index_find(ht, index, (void **)&tmp) != FAILURE) { + index = Z_LVAL_P(offset); +num_index: + if ((tmp = zend_hash_index_find(ht, index)) != NULL) { if (check_empty == 2) { return 1; } @@@ -690,10 -653,10 +692,10 @@@ return 0; } - if (check_inherited && intern->fptr_offset_get) { + if (check_empty && check_inherited && intern->fptr_offset_get) { - value = spl_array_read_dimension_ex(1, object, offset, BP_VAR_R TSRMLS_CC); + value = spl_array_read_dimension_ex(1, object, offset, BP_VAR_R, &rv TSRMLS_CC); } else { - value = *tmp; + value = tmp; } }

« previous php.cvs (#78450) next »