diff options
author | Anatol Belski <ab@php.net> | 2019-03-31 22:10:56 +0200 |
---|---|---|
committer | Anatol Belski <ab@php.net> | 2019-03-31 22:10:56 +0200 |
commit | f7b053f5da62514a0f9735ee342e322a19455399 (patch) | |
tree | 8a8493da5ce4bcd25b04907d49ca4520fcf58d2e /win32/winutil.c | |
parent | dd0aca0c11f2572e37fd9583866f37d895a80e4e (diff) | |
download | php-git-f7b053f5da62514a0f9735ee342e322a19455399.tar.gz |
Rework conditions and make them more future proof
Diffstat (limited to 'win32/winutil.c')
-rw-r--r-- | win32/winutil.c | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/win32/winutil.c b/win32/winutil.c index f0dc9d69e3..5484c6d667 100644 --- a/win32/winutil.c +++ b/win32/winutil.c @@ -453,6 +453,7 @@ PHP_WINUTIL_API BOOL php_win32_image_compatible(const char *name, const char *pa DWORD major = img->FileHeader->OptionalHeader.MajorLinkerVersion; DWORD minor = img->FileHeader->OptionalHeader.MinorLinkerVersion; +#if PHP_LINKER_MAJOR == 14 /* VS 2015, 2017 and 2019 are binary compatible, but only forward compatible. It should be fine, if we load a module linked with an older one into the core linked with the newer one, but not the otherway round. @@ -460,8 +461,11 @@ PHP_WINUTIL_API BOOL php_win32_image_compatible(const char *name, const char *pa per the current knowledge. This check is to be extended as new VS versions come out. */ - if (14 == PHP_LINKER_MAJOR && 14 == major && PHP_LINKER_MINOR < minor - || PHP_LINKER_MAJOR != major) { + if (14 == major && PHP_LINKER_MINOR < minor || PHP_LINKER_MAJOR != major) +#else + if (PHP_LINKER_MAJOR != major) +#endif + { spprintf(err, 0, "Can't load module '%s' as it's linked with %u.%u, but the core is linked with %d.%d", name, major, minor, PHP_LINKER_MAJOR, PHP_LINKER_MINOR); ImageUnload(img); return FALSE; @@ -491,18 +495,15 @@ PHP_WINUTIL_API BOOL php_win32_crt_compatible(const char *name, char **err) #if PHP_LINKER_MAJOR == 14 DWORD core_minor = (DWORD)(PHP_LINKER_MINOR/10); DWORD comp_minor = (DWORD)(minor/10); - if (core_minor > comp_minor) { - spprintf(err, 0, "'%s' %u.%u is not compatible with this PHP build linked with %d.%d", name, major, minor, PHP_LINKER_MAJOR, PHP_LINKER_MINOR); - ImageUnload(img); - return FALSE; - } + if (14 == major && core_minor > comp_minor || PHP_LINKER_MAJOR != major) #else - if (PHP_LINKER_MAJOR != major) { + if (PHP_LINKER_MAJOR != major) +#endif + { spprintf(err, 0, "'%s' %u.%u is not compatible with this PHP build linked with %d.%d", name, major, minor, PHP_LINKER_MAJOR, PHP_LINKER_MINOR); ImageUnload(img); return FALSE; } -#endif ImageUnload(img); return TRUE; |