Skip to content

Commit 56fa90f

Browse files
Synchronize changes from 1.6 branch [ci skip]
9eb15a7 Addendum #3 to db63a1: Fix offset notes (1 regressed, 1 missing) 4dd4653 Addendum #2 to db63a1: Fix comment style and add another entry d585ea6 Addendum to db63a1d: Correct documentation (that, and commit desc, was wrong: 0x0002A733 = 0x0001F4B3) 86e63cb Avoid d3d9.dll crash @ 0x0002A733 (Top 5 most popular MTA crash) and add known incompatible d3d9.dll interface. 363e2b5 Different approach for 8e4f245 (Fix vertex buffer lock failures) 2bedbb1 Fix buffer lock failures (and the #4 most common SA crash @ 0x00354B1C)
2 parents 89e8640 + 9eb15a7 commit 56fa90f

File tree

1 file changed

+10
-4
lines changed

1 file changed

+10
-4
lines changed

Client/core/DXHook/CProxyDirect3DVertexBuffer.cpp

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -111,17 +111,23 @@ HRESULT CProxyDirect3DVertexBuffer::Lock(UINT OffsetToLock, UINT SizeToLock, voi
111111

112112
*ppbData = NULL;
113113
HRESULT hr = DoLock(OffsetToLock, SizeToLock, ppbData, Flags);
114+
HRESULT originalHr = hr;
115+
116+
if (SUCCEEDED(hr) && *ppbData == NULL)
117+
{
118+
hr = D3DERR_INVALIDCALL;
119+
}
114120

115121
// Report problems
116-
if (FAILED(hr) || *ppbData == NULL)
122+
if (FAILED(hr))
117123
{
118124
struct
119125
{
120126
const char* szText;
121127
uint uiReportId;
122128
uint uiLogEventId;
123129
} info;
124-
if (hr == D3D_OK)
130+
if (hr == D3DERR_INVALIDCALL && originalHr == D3D_OK)
125131
info = {"result NULL", 8621, 621};
126132
else if (hr == STATUS_ARRAY_BOUNDS_EXCEEDED)
127133
info = {"offset out of range", 8622, 622};
@@ -130,8 +136,8 @@ HRESULT CProxyDirect3DVertexBuffer::Lock(UINT OffsetToLock, UINT SizeToLock, voi
130136
else
131137
info = {"fail", 8620, 620};
132138

133-
SString strMessage("Lock VertexBuffer [%s] hr:%x Length:%x Usage:%x FVF:%x Pool:%x OffsetToLock:%x SizeToLock:%x Flags:%x", info.szText, hr, m_iMemUsed,
134-
m_dwUsage, m_dwFVF, m_pool, OffsetToLock, SizeToLock, Flags);
139+
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,
140+
originalHr, m_iMemUsed, m_dwUsage, m_dwFVF, m_pool, OffsetToLock, SizeToLock, Flags);
135141
WriteDebugEvent(strMessage);
136142
AddReportLog(info.uiReportId, strMessage);
137143
CCore::GetSingleton().LogEvent(info.uiLogEventId, "Lock VertexBuffer", "", strMessage);

0 commit comments

Comments
 (0)