From: Robert Wilhelm robert.wilhelm@gmx.net
You have to pass string length without terminal null to SysAllocStringLen.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=53569 --- dlls/scrrun/filesystem.c | 2 +- dlls/scrrun/tests/filesystem.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/dlls/scrrun/filesystem.c b/dlls/scrrun/filesystem.c index 35b43e2f124..458c550a004 100644 --- a/dlls/scrrun/filesystem.c +++ b/dlls/scrrun/filesystem.c @@ -3449,7 +3449,7 @@ static HRESULT WINAPI filesys_GetTempName(IFileSystem3 *iface, BSTR *result) if (!result) return E_POINTER;
- if (!(*result = SysAllocStringLen(NULL, 13))) + if (!(*result = SysAllocStringLen(NULL, 12))) return E_OUTOFMEMORY;
if(!RtlGenRandom(&random, sizeof(random))) diff --git a/dlls/scrrun/tests/filesystem.c b/dlls/scrrun/tests/filesystem.c index 5ec2d3edea5..5e88eaec46b 100644 --- a/dlls/scrrun/tests/filesystem.c +++ b/dlls/scrrun/tests/filesystem.c @@ -485,7 +485,7 @@ static void test_GetTempName(void) hr = IFileSystem3_GetTempName(fs3, &result); ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(!!wcsstr( result,L".tmp"), "GetTempName returned %s, expected .tmp suffix\n", debugstr_w(result)); - todo_wine ok(SysStringLen(result) == lstrlenW(result),"GetTempName returned %s, has incorrect string len.\n", debugstr_w(result)); + ok(SysStringLen(result) == lstrlenW(result),"GetTempName returned %s, has incorrect string len.\n", debugstr_w(result)); SysFreeString(result); }