@@ -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