forked from focus-creative-games/il2cpp_plus
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathLastError.cpp
More file actions
34 lines (28 loc) · 1007 Bytes
/
LastError.cpp
File metadata and controls
34 lines (28 loc) · 1007 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include "LastError.h"
#include "Thread.h"
#include "os/LastError.h"
namespace il2cpp
{
namespace vm
{
int32_t LastError::s_LastErrorThreadLocalStorageOffset = -1;
uint32_t LastError::GetLastError()
{
if (s_LastErrorThreadLocalStorageOffset == -1)
return 0;
return *(uint32_t*)Thread::GetThreadStaticData(s_LastErrorThreadLocalStorageOffset);
}
void LastError::StoreLastError()
{
// Get the last error first, before any other calls (so that we don't stomp on it).
uint32_t lastError = os::LastError::GetLastError();
uint32_t* lastErrorTls = (uint32_t*)Thread::GetThreadStaticData(s_LastErrorThreadLocalStorageOffset);
*lastErrorTls = lastError;
}
void LastError::InitializeLastErrorThreadStatic()
{
if (s_LastErrorThreadLocalStorageOffset == -1)
s_LastErrorThreadLocalStorageOffset = Thread::AllocThreadStaticData(sizeof(uint32_t));
}
} /* namespace vm */
} /* namespace il2cpp */