summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoe Watkins <krakjoe@php.net>2017-10-30 14:16:27 +0000
committerJoe Watkins <krakjoe@php.net>2017-10-30 14:16:27 +0000
commit37b0ad5537e7ccbdce6d81afa402c01885db79f1 (patch)
treeecaa6702241a9d88958d99655e613f7df07be6b8
parent5262bd9ea3c5cecde0f92cf40b31245426173b30 (diff)
parenta2cd2965d72290d24e1bb3906834662fd1be45d7 (diff)
downloadphp-git-37b0ad5537e7ccbdce6d81afa402c01885db79f1.tar.gz
Merge branch 'PHP-7.1' of git.php.net:/php-src into PHP-7.1
* 'PHP-7.1' of git.php.net:/php-src: Yet one attempt to mitigate the unzip error on AppVeyor Ensure SDK is checked out before asking for version Fix fetching the SDK version Fix SDK version comparison and add more verbosity Don't use the cache dependency, SDK version is handled in script Remove status check on the SDK repo and add version check Use abbrev Catch with the latest AppVeyor unzip errors Fixed type inference
-rw-r--r--.appveyor.yml1
-rw-r--r--appveyor/build.bat13
-rw-r--r--ext/opcache/Optimizer/zend_inference.c7
3 files changed, 17 insertions, 4 deletions
diff --git a/.appveyor.yml b/.appveyor.yml
index e55c2adab2..d1c5c0f448 100644
--- a/.appveyor.yml
+++ b/.appveyor.yml
@@ -18,7 +18,6 @@ clone_depth: 64
cache:
- c:\build-cache
- - c:\build-cache\sdk -> .appveyor.yml
environment:
PHP_BUILD_CACHE_BASE_DIR: c:\build-cache
diff --git a/appveyor/build.bat b/appveyor/build.bat
index 31081bbe06..c4a21c7faa 100644
--- a/appveyor/build.bat
+++ b/appveyor/build.bat
@@ -2,6 +2,7 @@
set SDK_REMOTE=https://github.com/OSTC/php-sdk-binary-tools.git
set SDK_BRANCH=%PHP_BUILD_SDK_BRANCH%
+set SDK_RUNNER=%PHP_BUILD_CACHE_SDK_DIR%\phpsdk-vc14-%PLATFORM%.bat
if not exist "%PHP_BUILD_CACHE_BASE_DIR%" (
echo Creating %PHP_BUILD_CACHE_BASE_DIR%
@@ -13,17 +14,25 @@ if not exist "%PHP_BUILD_OBJ_DIR%" (
mkdir "%PHP_BUILD_OBJ_DIR%"
)
+if not exist "%SDK_RUNNER%" (
+ if exist "%PHP_BUILD_CACHE_SDK_DIR%" rmdir /s /q "%PHP_BUILD_CACHE_SDK_DIR%"
+)
+
if not exist "%PHP_BUILD_CACHE_SDK_DIR%" (
echo Cloning remote SDK repository
git clone --branch %SDK_BRANCH% %SDK_REMOTE% "%PHP_BUILD_CACHE_SDK_DIR%" 2>&1
-) else (
+)
+
+for /f "tokens=*" %%a in ('type %PHP_BUILD_CACHE_SDK_DIR%\VERSION') do set GOT_SDK_VER=%%a
+echo Got SDK version %GOT_SDK_VER%
+if NOT "%GOT_SDK_VER%" == "%PHP_BUILD_SDK_BRANCH:~8%" (
+ echo Switching to the configured SDK version %SDK_BRANCH:~8%
echo Fetching remote SDK repository
git --git-dir="%PHP_BUILD_CACHE_SDK_DIR%\.git" --work-tree="%PHP_BUILD_CACHE_SDK_DIR%" fetch --prune origin 2>&1
echo Checkout SDK repository branch
git --git-dir="%PHP_BUILD_CACHE_SDK_DIR%\.git" --work-tree="%PHP_BUILD_CACHE_SDK_DIR%" checkout --force %SDK_BRANCH%
)
-set SDK_RUNNER=%PHP_BUILD_CACHE_SDK_DIR%\phpsdk-vc14-%PLATFORM%.bat
if not exist "%SDK_RUNNER%" (
echo "%SDK_RUNNER%" doesn't exist
exit /b 3
diff --git a/ext/opcache/Optimizer/zend_inference.c b/ext/opcache/Optimizer/zend_inference.c
index 6e0d0cb5d9..1d142566ab 100644
--- a/ext/opcache/Optimizer/zend_inference.c
+++ b/ext/opcache/Optimizer/zend_inference.c
@@ -3075,7 +3075,12 @@ static int zend_update_type_info(const zend_op_array *op_array,
}
j = zend_ssa_next_use(ssa_ops, ssa_ops[i].result_def, j);
}
- UPDATE_SSA_TYPE(tmp, ssa_ops[i].op1_def);
+ if ((tmp & MAY_BE_ARRAY) && (tmp & MAY_BE_ARRAY_KEY_ANY)) {
+ UPDATE_SSA_TYPE(tmp, ssa_ops[i].op1_def);
+ } else {
+ /* invalid key type */
+ UPDATE_SSA_TYPE(t1, ssa_ops[i].op1_def);
+ }
COPY_SSA_OBJ_TYPE(ssa_ops[i].op1_use, ssa_ops[i].op1_def);
}
/* FETCH_LIST on a string behaves like FETCH_R on null */