Reece Dunn : kernel32/tests: Add a test case for calling TlsFree on a freed index.
Module: wine Branch: master Commit: 1b46c0660d4baad9f4afe0086fb4e44240b18131 URL: http://source.winehq.org/git/wine.git/?a=commit;h=1b46c0660d4baad9f4afe0086f... Author: Reece Dunn <msclrhd(a)gmail.com> Date: Tue Mar 2 21:29:48 2010 +0000 kernel32/tests: Add a test case for calling TlsFree on a freed index. --- dlls/kernel32/process.c | 2 +- dlls/kernel32/tests/thread.c | 12 +++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/dlls/kernel32/process.c b/dlls/kernel32/process.c index 1ef3e46..d9d4520 100644 --- a/dlls/kernel32/process.c +++ b/dlls/kernel32/process.c @@ -2496,7 +2496,7 @@ BOOL WINAPI TlsFree( DWORD index ) if (ret) NtSetInformationThread( GetCurrentThread(), ThreadZeroTlsCell, &index, sizeof(index) ); else SetLastError( ERROR_INVALID_PARAMETER ); RtlReleasePebLock(); - return TRUE; + return ret; } diff --git a/dlls/kernel32/tests/thread.c b/dlls/kernel32/tests/thread.c index 83d13c5..afa6759 100644 --- a/dlls/kernel32/tests/thread.c +++ b/dlls/kernel32/tests/thread.c @@ -421,7 +421,17 @@ static VOID test_CreateThread_basic(void) "Thread did not execute successfully\n"); ok(CloseHandle(thread[i])!=0,"CloseHandle failed\n"); } - ok(TlsFree(tlsIndex)!=0,"TlsFree failed\n"); + + SetLastError(0xCAFEF00D); + ok(TlsFree(tlsIndex)!=0,"TlsFree failed: %08x\n", GetLastError()); + ok(GetLastError()==0xCAFEF00D, + "GetLastError: expected 0xCAFEF00D, got %08x\n", GetLastError()); + + /* Test freeing an already freed TLS index */ + SetLastError(0xCAFEF00D); + ok(TlsFree(tlsIndex)==0,"TlsFree succeeded\n"); + ok(GetLastError()==ERROR_INVALID_PARAMETER, + "GetLastError: expected ERROR_INVALID_PARAMETER, got %08x\n", GetLastError()); /* Test how passing NULL as a pointer to threadid works */ SetLastError(0xFACEaBAD);
participants (1)
-
Alexandre Julliard