Module: wine Branch: master Commit: b6da072551cf6eb88d1500df5127802face30a18 URL: http://source.winehq.org/git/wine.git/?a=commit;h=b6da072551cf6eb88d1500df51...
Author: Alexander Kochetkov al.kochet@gmail.com Date: Wed Oct 14 11:27:10 2009 +0400
oleaut32/tests: Checking null terminator in return value of SysReAllocStringLen.
---
dlls/oleaut32/tests/vartype.c | 31 +++++++++++++++++++++++++++++++ 1 files changed, 31 insertions(+), 0 deletions(-)
diff --git a/dlls/oleaut32/tests/vartype.c b/dlls/oleaut32/tests/vartype.c index b7528c4..b50a673 100644 --- a/dlls/oleaut32/tests/vartype.c +++ b/dlls/oleaut32/tests/vartype.c @@ -5397,6 +5397,37 @@ static void test_SysReAllocStringLen(void)
SysFreeString(str); } + + /* Windows always returns null terminated strings */ + str = SysAllocStringLen(szTest, 4); + ok (str != NULL, "Expected non-NULL\n"); + if (str) + { + const int CHUNK_SIZE = 64; + const int STRING_SIZE = 24; + int changed; + changed = SysReAllocStringLen(&str, NULL, CHUNK_SIZE); + ok (changed == 1, "Expected 1, got %d\n", changed); + ok (str != NULL, "Expected non-NULL\n"); + if (str) + { + BSTR oldstr = str; + + /* Filling string */ + memset (str, 0xAB, CHUNK_SIZE * sizeof (OLECHAR)); + /* Checking null terminator */ + changed = SysReAllocStringLen(&str, NULL, STRING_SIZE); + ok (changed == 1, "Expected 1, got %d\n", changed); + ok (str != NULL, "Expected non-NULL\n"); + if (str) + { + ok (str == oldstr, "Expected reuse of the old string memory\n"); + todo_wine ok (str[STRING_SIZE] == 0, + "Expected null terminator, got 0x%04X\n", str[STRING_SIZE]); + SysFreeString(str); + } + } + } }
static void test_BstrCopy(void)