@@ -163,41 +163,42 @@ #elif defined(OF_WINDOWS) # ifdef OF_HAVE_FILES void *pool = objc_autoreleasePoolPush(); @try { - wchar_t systemDir[PATH_MAX]; + of_string_encoding_t encoding = [OFLocale encoding]; + char systemDir[PATH_MAX]; UINT systemDirLen; OFString *systemDirString; - const of_char16_t *path; + const char *path; void *buffer; DWORD bufferLen; - systemDirLen = GetSystemDirectoryW(systemDir, PATH_MAX); + systemDirLen = GetSystemDirectoryA(systemDir, PATH_MAX); if (systemDirLen == 0) return; - systemDirString = [OFString - stringWithUTF16String: systemDir - length: systemDirLen]; - path = [systemDirString stringByAppendingPathComponent: - @"kernel32.dll"].UTF16String; + systemDirString = [OFString stringWithCString: systemDir + encoding: encoding + length: systemDirLen]; + path = [[systemDirString stringByAppendingPathComponent: + @"kernel32.dll"] cStringWithEncoding: encoding]; - if ((bufferLen = GetFileVersionInfoSizeW(path, NULL)) == 0) + if ((bufferLen = GetFileVersionInfoSizeA(path, NULL)) == 0) return; if ((buffer = malloc(bufferLen)) == 0) return; @try { void *data; UINT dataLen; VS_FIXEDFILEINFO *info; - if (!GetFileVersionInfoW(path, 0, bufferLen, buffer)) + if (!GetFileVersionInfoA(path, 0, bufferLen, buffer)) return; - if (!VerQueryValueW(buffer, L"\\", &data, &dataLen) || + if (!VerQueryValueA(buffer, "\\", &data, &dataLen) || dataLen < sizeof(info)) return; info = (VS_FIXEDFILEINFO *)data;