From c5acbef3bf0086c45fcac1872ccdfc2c4b2ad6d0 Mon Sep 17 00:00:00 2001
From: cosmonaut <[EMAIL REDACTED]>
Date: Wed, 11 Dec 2024 16:17:14 -0800
Subject: [PATCH] GPU: Fix D3D12_INTERNAL_StrToWStr returning incorrect length
---
src/gpu/d3d12/SDL_gpu_d3d12.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/src/gpu/d3d12/SDL_gpu_d3d12.c b/src/gpu/d3d12/SDL_gpu_d3d12.c
index f42c72bf80169..4ecbf04575680 100644
--- a/src/gpu/d3d12/SDL_gpu_d3d12.c
+++ b/src/gpu/d3d12/SDL_gpu_d3d12.c
@@ -3630,7 +3630,8 @@ static bool D3D12_INTERNAL_StrToWStr(
Uint32 *outSize)
{
size_t inlen, result;
- size_t outlen = wstrSize;
+ size_t outBytesLeft = wstrSize;
+ *outSize = 0;
if (renderer->iconv == NULL) {
renderer->iconv = SDL_iconv_open("WCHAR_T", "UTF-8");
@@ -3644,9 +3645,8 @@ static bool D3D12_INTERNAL_StrToWStr(
&str,
&inlen,
(char **)&wstr,
- &outlen);
+ &outBytesLeft);
- *outSize = (Uint32)outlen;
// Check...
switch (result) {
@@ -3660,6 +3660,7 @@ static bool D3D12_INTERNAL_StrToWStr(
break;
}
+ *outSize = (Uint32)(wstrSize - outBytesLeft);
return true;
}