Issue 4906: Preserve windows error state across PyThread_get_key_value

This commit is contained in:
Kristján Valur Jónsson 2009-01-10 12:14:31 +00:00
parent dbf558888e
commit abb70e9c9f
1 changed files with 10 additions and 1 deletions

View File

@ -315,7 +315,16 @@ PyThread_set_key_value(int key, void *value)
void *
PyThread_get_key_value(int key)
{
return TlsGetValue(key);
/* because TLS is used in the Py_END_ALLOW_THREAD macro,
* it is necessary to preserve the windows error state, because
* it is assumed to be preserved across the call to the macro.
* Ideally, the macro should be fixed, but it is simpler to
* do it here.
*/
DWORD error = GetLastError();
void *result = TlsGetValue(key);
SetLastError(error);
return result;
}
void