mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-04 22:10:11 +01:00
st/nine: Don't increment refcount on VertexDeclaration creation failure
NineUnknown_ctor increments the refcount even in case of an error. Restructure the code to prevent refcount increments. Fixes a couple of wine tests. Signed-off-by: Patrick Rudolph <siro@das-labor.org> Reviewed-by: Axel Davy <axel.davy@ens.fr>
This commit is contained in:
parent
b39fd5b1da
commit
531acbc56b
1 changed files with 13 additions and 13 deletions
|
|
@ -174,24 +174,24 @@ NineVertexDeclaration9_ctor( struct NineVertexDeclaration9 *This,
|
|||
const D3DVERTEXELEMENT9 *pElements )
|
||||
{
|
||||
const D3DCAPS9 *caps;
|
||||
unsigned i;
|
||||
|
||||
unsigned i, nelems;
|
||||
DBG("This=%p pParams=%p pElements=%p\n", This, pParams, pElements);
|
||||
|
||||
/* wine */
|
||||
for (nelems = 0;
|
||||
pElements[nelems].Stream != 0xFF;
|
||||
++nelems) {
|
||||
user_assert(pElements[nelems].Type != D3DDECLTYPE_UNUSED, E_FAIL);
|
||||
user_assert(!(pElements[nelems].Offset & 3), E_FAIL);
|
||||
}
|
||||
|
||||
caps = NineDevice9_GetCaps(pParams->device);
|
||||
user_assert(nelems <= caps->MaxStreams, D3DERR_INVALIDCALL);
|
||||
|
||||
HRESULT hr = NineUnknown_ctor(&This->base, pParams);
|
||||
if (FAILED(hr)) { return hr; }
|
||||
|
||||
/* wine */
|
||||
for (This->nelems = 0;
|
||||
pElements[This->nelems].Stream != 0xFF;
|
||||
++This->nelems) {
|
||||
user_assert(pElements[This->nelems].Type != D3DDECLTYPE_UNUSED, E_FAIL);
|
||||
user_assert(!(pElements[This->nelems].Offset & 3), E_FAIL);
|
||||
}
|
||||
|
||||
caps = NineDevice9_GetCaps(This->base.device);
|
||||
user_assert(This->nelems <= caps->MaxStreams, D3DERR_INVALIDCALL);
|
||||
|
||||
This->nelems = nelems;
|
||||
This->decls = CALLOC(This->nelems+1, sizeof(D3DVERTEXELEMENT9));
|
||||
This->elems = CALLOC(This->nelems, sizeof(struct pipe_vertex_element));
|
||||
This->usage_map = CALLOC(This->nelems, sizeof(uint16_t));
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue