From 2f81d15087683f2c1b1bbf069644167a7f154555 Mon Sep 17 00:00:00 2001 From: Daniel Collins Date: Thu, 12 Sep 2024 11:37:47 +0100 Subject: [PATCH] Fix error when reading from registry under Windows XP compatibility mode. --- src/common.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/common.c b/src/common.c index 43b7547..f64ff00 100644 --- a/src/common.c +++ b/src/common.c @@ -248,6 +248,19 @@ char *reg_get_string(HKEY key, const char *name, const char *default_value) if(buffer != NULL) { + /* RegQueryValueEx() fails with ERROR_INVALID_PARAMETER + * when a size of zero is provided with a non-NULL buffer + * pointer when running under Windows XP compatibility + * mode (but not under actual Windows XP), so we need to + * skip the RegQueryValueEx() call when the value is an + * empty string. + */ + if(value_size == 0) + { + buffer[0] = '\0'; + return buffer; + } + reg_err = RegQueryValueEx(key, name, NULL, &value_type, (BYTE*)(buffer), &value_size); if(reg_err == ERROR_SUCCESS) {