Util (Windows): fixes / adds a new Unicode conversion function

This commit is contained in:
李通洲
2025-12-08 20:11:14 +08:00
parent 0b6ca158ea
commit 7a322154fa
2 changed files with 23 additions and 1 deletions
+16 -1
View File
@@ -11,7 +11,7 @@ void ffStrbufSetNWS(FFstrbuf* result, uint32_t length, const wchar_t* source)
}
int size_needed = WideCharToMultiByte(CP_UTF8, 0, source, (int)length, NULL, 0, NULL, NULL);
if (size_needed < 0)
if (size_needed <= 0)
{
ffStrbufSetF(result, "WCTMB failed: %u", (unsigned) GetLastError());
return;
@@ -21,3 +21,18 @@ void ffStrbufSetNWS(FFstrbuf* result, uint32_t length, const wchar_t* source)
result->length = (uint32_t)size_needed;
result->chars[size_needed] = '\0';
}
void ffStrbufAppendNWS(FFstrbuf* result, uint32_t length, const wchar_t* source)
{
if(!length)
return;
int size_needed = WideCharToMultiByte(CP_UTF8, 0, source, (int)length, NULL, 0, NULL, NULL);
if (size_needed <= 0)
return;
ffStrbufEnsureFree(result, (uint32_t)size_needed);
WideCharToMultiByte(CP_UTF8, 0, source, (int)length, result->chars + result->length, size_needed, NULL, NULL);
result->length += (uint32_t)size_needed;
result->chars[result->length] = '\0';
}
+7
View File
@@ -4,6 +4,7 @@
#include <wchar.h>
void ffStrbufSetNWS(FFstrbuf* result, uint32_t length, const wchar_t* source);
void ffStrbufAppendNWS(FFstrbuf* result, uint32_t length, const wchar_t* source);
static inline void ffStrbufSetWS(FFstrbuf* result, const wchar_t* source)
{
@@ -11,6 +12,12 @@ static inline void ffStrbufSetWS(FFstrbuf* result, const wchar_t* source)
return ffStrbufSetNWS(result, (uint32_t)wcslen(source), source);
}
static inline void ffStrbufAppendWS(FFstrbuf* result, const wchar_t* source)
{
if (!source) return;
return ffStrbufAppendNWS(result, (uint32_t)wcslen(source), source);
}
static inline void ffStrbufInitNWS(FFstrbuf* result, uint32_t length, const wchar_t* source)
{
ffStrbufInit(result);