-
Notifications
You must be signed in to change notification settings - Fork 78
Expand file tree
/
Copy pathTr2LockGuard.cpp
More file actions
75 lines (69 loc) · 1.46 KB
/
Copy pathTr2LockGuard.cpp
File metadata and controls
75 lines (69 loc) · 1.46 KB
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
// Copyright © 2023 CCP ehf.
#include "StdAfx.h"
#include "Tr2LockGuard.h"
Tr2LockGuard::Tr2LockGuard() :
m_memory( nullptr ),
m_originalMemory( nullptr ),
m_size( 0 )
{
}
Tr2LockGuard::~Tr2LockGuard()
{
CCPFreeWithGuard( m_memory );
}
void Tr2LockGuard::Lock( size_t size, void* originalMemory )
{
CCP_ASSERT( size );
if( !size )
{
CCP_LOGWARN( "TrinityAL: guarded lock buffer is locked with size 0" );
}
else
{
CCP_ASSERT( originalMemory );
if( !originalMemory )
{
CCP_LOGWARN( "TrinityAL: guarded lock buffer is locked with original memory NULL" );
}
}
CCP_ASSERT( !m_memory );
if( m_memory )
{
CCP_LOGWARN( "TrinityAL: guarded lock buffer is not NULL when locking" );
}
CCPFreeWithGuard( m_memory );
m_memory = CCPMallocWithGuard( size );
if( !m_memory )
{
CCP_LOGERR( " TrinityAL: guarded lock out of memory (size: %zu)", size );
}
else
{
memset( m_memory, 0xde, size );
}
m_originalMemory = originalMemory;
m_size = size;
}
void Tr2LockGuard::Unlock()
{
CCP_ASSERT( m_memory );
if( !m_memory )
{
CCP_LOGWARN( "TrinityAL: guarded lock buffer memory is NULL when unlocking" );
return;
}
CCP_ASSERT( m_originalMemory );
if( !m_originalMemory )
{
CCP_LOGWARN( "TrinityAL: guarded lock original buffer memory is NULL when unlocking" );
return;
}
memcpy( m_originalMemory, m_memory, m_size );
CCPFreeWithGuard( m_memory );
m_memory = nullptr;
m_originalMemory = nullptr;
}
void* Tr2LockGuard::GetMemory()
{
return m_memory;
}