diff --git a/src/xpdev/ini_file.c b/src/xpdev/ini_file.c index 99bfe92ea97647005359a583ccac69ee5e43d043..58bf924103a74aa19cdbfb2429db935002801a7b 100644 --- a/src/xpdev/ini_file.c +++ b/src/xpdev/ini_file.c @@ -1020,10 +1020,11 @@ char* iniReadSString(FILE* fp, const char* section, const char* key, const char* size_t pos; ret = iniReadString(fp, section, key, deflt, fval); - if (ret == NULL) + if (ret == NULL) { + if (sz > 0 && value != NULL) + value[0] = 0; return NULL; - if (ret == deflt) - return (char*)deflt; + } if (sz < 1 || value == NULL) return value; for (pos = 0; ret[pos]; pos++) { @@ -1032,6 +1033,8 @@ char* iniReadSString(FILE* fp, const char* section, const char* key, const char* value[pos] = ret[pos]; } value[pos] = 0; + if (ret == deflt) + return (char*)deflt; return value; } @@ -1067,10 +1070,11 @@ char* iniGetSString(str_list_t list, const char* section, const char* key, const size_t pos; ret = iniGetString(list, section, key, deflt, fval); - if (ret == NULL) + if (ret == NULL) { + if (sz > 0 && value != NULL) + value[0] = 0; return NULL; - if (ret == deflt) - return (char*)deflt; + } if (sz < 1 || value == NULL) return value; for (pos = 0; ret[pos]; pos++) { @@ -1079,6 +1083,8 @@ char* iniGetSString(str_list_t list, const char* section, const char* key, const value[pos] = ret[pos]; } value[pos] = 0; + if (ret == deflt) + return (char*)deflt; return value; }