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; | 
