summaryrefslogtreecommitdiff
path: root/src/drivers
diff options
context:
space:
mode:
authorMatthias Melcher <github@matthiasm.com>2025-11-01 01:37:31 +0100
committerMatthias Melcher <github@matthiasm.com>2025-11-01 01:37:31 +0100
commit2d33e5b90c04dc345d722e8a16572f59a10be1a0 (patch)
tree88f889a17bc1152650bc17adf56ea17e01ba9213 /src/drivers
parent0ac7e427a17764ccdbe22add65a20427ac113294 (diff)
Improve docs for UTF-8 calls (1/2)(#125)
Diffstat (limited to 'src/drivers')
-rw-r--r--src/drivers/WinAPI/Fl_WinAPI_System_Driver.cxx5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/drivers/WinAPI/Fl_WinAPI_System_Driver.cxx b/src/drivers/WinAPI/Fl_WinAPI_System_Driver.cxx
index 72ed0680f..19b01190b 100644
--- a/src/drivers/WinAPI/Fl_WinAPI_System_Driver.cxx
+++ b/src/drivers/WinAPI/Fl_WinAPI_System_Driver.cxx
@@ -190,13 +190,14 @@ char *Fl_WinAPI_System_Driver::utf2mbcs(const char *utf8) {
unsigned len = (unsigned)strlen(utf8);
unsigned wn = fl_utf8toUtf16(utf8, len, NULL, 0) + 7; // Query length
- mbwbuf = (wchar_t *)realloc(mbwbuf, sizeof(wchar_t) * wn);
+ mbwbuf = (wchar_t *)realloc(mbwbuf, sizeof(wchar_t) * (wn+1));
len = fl_utf8toUtf16(utf8, len, (unsigned short *)mbwbuf, wn); // Convert string
mbwbuf[len] = 0;
- buf = (char*)realloc(buf, len * 6 + 1);
+ buf = (char*)realloc(buf, len * 6 + 2);
len = (unsigned)wcstombs(buf, mbwbuf, len * 6);
buf[len] = 0;
+ buf[len+1] = 0; // in case the result is a UTF-16 string
return buf;
}