d3dxof: Fix IDirectXFileDataImpl_GetName and IDirectXFileDataReferenceImpl_GetName + tests.
This commit is contained in:
parent
635f76b085
commit
2152526165
|
@ -587,6 +587,9 @@ static HRESULT WINAPI IDirectXFileDataImpl_GetName(IDirectXFileData* iface, LPST
|
||||||
if (*pdwBufLen < len)
|
if (*pdwBufLen < len)
|
||||||
return DXFILEERR_BADVALUE;
|
return DXFILEERR_BADVALUE;
|
||||||
CopyMemory(pstrNameBuf, This->pobj->name, len);
|
CopyMemory(pstrNameBuf, This->pobj->name, len);
|
||||||
|
/* Even if we return a size of 0, an empty string with a null byte must be returned */
|
||||||
|
if (*pdwBufLen && !len)
|
||||||
|
pstrNameBuf[0] = 0;
|
||||||
}
|
}
|
||||||
*pdwBufLen = len;
|
*pdwBufLen = len;
|
||||||
|
|
||||||
|
@ -851,6 +854,9 @@ static HRESULT WINAPI IDirectXFileDataReferenceImpl_GetName(IDirectXFileDataRefe
|
||||||
if (*pdwBufLen < len)
|
if (*pdwBufLen < len)
|
||||||
return DXFILEERR_BADVALUE;
|
return DXFILEERR_BADVALUE;
|
||||||
CopyMemory(pstrNameBuf, This->ptarget->name, len);
|
CopyMemory(pstrNameBuf, This->ptarget->name, len);
|
||||||
|
/* Even if we return a size of 0, an empty string with a null byte must be returned */
|
||||||
|
if (*pdwBufLen && !len)
|
||||||
|
pstrNameBuf[0] = 0;
|
||||||
}
|
}
|
||||||
*pdwBufLen = len;
|
*pdwBufLen = len;
|
||||||
|
|
||||||
|
|
|
@ -546,10 +546,18 @@ static void test_getname(void)
|
||||||
hr = IDirectXFileData_GetName(lpdxfd, NULL, &length);
|
hr = IDirectXFileData_GetName(lpdxfd, NULL, &length);
|
||||||
ok(hr == DXFILE_OK, "IDirectXFileData_GetName: %x\n", hr);
|
ok(hr == DXFILE_OK, "IDirectXFileData_GetName: %x\n", hr);
|
||||||
ok(length == 0, "Returned length should be 0 instead of %u\n", length);
|
ok(length == 0, "Returned length should be 0 instead of %u\n", length);
|
||||||
length = sizeof(name);
|
length = 0;
|
||||||
|
name[0] = 0x7f;
|
||||||
hr = IDirectXFileData_GetName(lpdxfd, name, &length);
|
hr = IDirectXFileData_GetName(lpdxfd, name, &length);
|
||||||
ok(hr == DXFILE_OK, "IDirectXFileData_GetName: %x\n", hr);
|
ok(hr == DXFILE_OK, "IDirectXFileData_GetName: %x\n", hr);
|
||||||
ok(length == 0, "Returned length should be 0 instead of %u\n", length);
|
ok(length == 0, "Returned length should be 0 instead of %u\n", length);
|
||||||
|
ok(name[0] == 0x7f, "First character is %#x instead of 0x7f\n", name[0]);
|
||||||
|
length = sizeof(name);
|
||||||
|
name[0] = 0x7f;
|
||||||
|
hr = IDirectXFileData_GetName(lpdxfd, name, &length);
|
||||||
|
ok(hr == DXFILE_OK, "IDirectXFileData_GetName: %x\n", hr);
|
||||||
|
ok(length == 0, "Returned length should be 0 instead of %u\n", length);
|
||||||
|
ok(name[0] == 0, "First character is %#x instead of 0x00\n", name[0]);
|
||||||
|
|
||||||
ref = IDirectXFileEnumObject_Release(lpdxfeo);
|
ref = IDirectXFileEnumObject_Release(lpdxfeo);
|
||||||
ok(ref == 0, "Got refcount %d, expected 0\n", ref);
|
ok(ref == 0, "Got refcount %d, expected 0\n", ref);
|
||||||
|
|
Loading…
Reference in New Issue