Skip to content

Commit 6f3369b

Browse files
committed
Addendum to vertex buffer lock fixes (Return S_OK as GTA expects for return values)
1 parent 910515b commit 6f3369b

File tree

1 file changed

+11
-8
lines changed

1 file changed

+11
-8
lines changed

Client/core/DXHook/CProxyDirect3DVertexBuffer.cpp

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -116,32 +116,35 @@ HRESULT CProxyDirect3DVertexBuffer::Lock(UINT OffsetToLock, UINT SizeToLock, voi
116116
*ppbData = nullptr;
117117
HRESULT hr = DoLock(OffsetToLock, SizeToLock, ppbData, Flags);
118118
HRESULT originalHr = hr;
119+
bool bPointerNull = false;
119120

120-
if (SUCCEEDED(hr) && *ppbData == nullptr)
121+
if (SUCCEEDED(hr))
121122
{
122-
hr = D3DERR_INVALIDCALL;
123+
bPointerNull = (*ppbData == nullptr);
123124
}
124125

125126
// Report problems
126-
if (FAILED(hr))
127+
if (FAILED(hr) || bPointerNull)
127128
{
128129
struct
129130
{
130131
const char* szText;
131132
uint uiReportId;
132133
uint uiLogEventId;
133134
} info;
134-
if (hr == D3DERR_INVALIDCALL && originalHr == D3D_OK)
135+
HRESULT reportHr = FAILED(hr) ? hr : D3DERR_INVALIDCALL;
136+
if (bPointerNull && originalHr == D3D_OK)
135137
info = {"result NULL", 8621, 621};
136-
else if (hr == STATUS_ARRAY_BOUNDS_EXCEEDED)
138+
else if (reportHr == STATUS_ARRAY_BOUNDS_EXCEEDED)
137139
info = {"offset out of range", 8622, 622};
138-
else if (hr == STATUS_ACCESS_VIOLATION)
140+
else if (reportHr == STATUS_ACCESS_VIOLATION)
139141
info = {"access violation", 8623, 623};
140142
else
141143
info = {"fail", 8620, 620};
142144

143-
SString strMessage("Lock VertexBuffer [%s] hr:%x origHr:%x Length:%x Usage:%x FVF:%x Pool:%x OffsetToLock:%x SizeToLock:%x Flags:%x", info.szText, hr,
144-
originalHr, m_iMemUsed, m_dwUsage, m_dwFVF, m_pool, OffsetToLock, SizeToLock, Flags);
145+
SString strMessage("Lock VertexBuffer [%s] hr:%x origHr:%x returnHr:%x pointerNull:%u Length:%x Usage:%x FVF:%x Pool:%x OffsetToLock:%x SizeToLock:%x Flags:%x",
146+
info.szText, reportHr, originalHr, hr, static_cast<uint>(bPointerNull), m_iMemUsed, m_dwUsage, m_dwFVF, m_pool, OffsetToLock, SizeToLock,
147+
Flags);
145148
WriteDebugEvent(strMessage);
146149
AddReportLog(info.uiReportId, strMessage);
147150
CCore::GetSingleton().LogEvent(info.uiLogEventId, "Lock VertexBuffer", "", strMessage);

0 commit comments

Comments
 (0)