From 8c6d006b55bf5ba230dda672344dbd0e2a7d4be3 Mon Sep 17 00:00:00 2001 From: "Christoph M. Becker" Date: Mon, 4 May 2020 14:55:24 +0200 Subject: [PATCH] Fix #79557: extension_dir = ./ext now use current directory for base For some reason, `ImageLoad()` fails to load images with a relative path starting with `.\` or `./`. We work around this issue by stripping those leading characters. --- NEWS | 2 ++ win32/winutil.c | 8 +++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/NEWS b/NEWS index 426bd0b872..3f5fe37e25 100644 --- a/NEWS +++ b/NEWS @@ -7,6 +7,8 @@ PHP NEWS called). (Laruence) . Fixed bug #79566 (Private SHM is not private on Windows). (cmb) . Fixed bug #79489 (.user.ini does not inherit). (cmb) + . Fixed bug #79557 (extension_dir = ./ext now use current directory for + base). (cmb) - FFI: . Fixed bug #79571 (FFI: var_dumping unions may segfault). (cmb) diff --git a/win32/winutil.c b/win32/winutil.c index c04664bab3..8cf5cdc1e7 100644 --- a/win32/winutil.c +++ b/win32/winutil.c @@ -440,7 +440,13 @@ PHP_WINUTIL_API char *php_win32_get_username(void) static zend_always_inline BOOL is_compatible(const char *name, BOOL is_smaller, char *format, char **err) {/*{{{*/ - PLOADED_IMAGE img = ImageLoad(name, NULL); + /* work around ImageLoad() issue */ + char *name_stripped = name; + if (name[0] == '.' && IS_SLASH(name[1])) { + name_stripped += 2; + } + + PLOADED_IMAGE img = ImageLoad(name_stripped, NULL); if (!img) { DWORD _err = GetLastError(); -- 2.50.1