2011/11/9 David Adam david.adam.cnrs@gmail.com:
Better, but there are still issues:
+ if( polygon ) polygon->lpVtbl->Release(polygon); + if( ppBuffer ) ID3DXBuffer_Release(ppBuffer);
You aren't setting those pointers to NULL (and your test shows that D3DXCreatePolygon doesn't touch them when the call fails), so those ifs actually are protecting nothing.
In patch 1/2, LockVertex/IndexBuffer should not fail in normal circumstances, so it's probably better to use ERR instead of TRACE there.
Also, please, try to fixup the code style. E.g. the preferred style for 'if's and loops is to have a whitespace between the keyword and the '(' and no whitespace between the parentheses and the condition. Stick with that. Don't use hungarian notation (ppBuffer ...), fix whitespaces around operators, etc
Am 09.11.2011 14:42, schrieb Matteo Bruni:
2011/11/9 David Adamdavid.adam.cnrs@gmail.com: Better, but there are still issues:
- if( polygon ) polygon->lpVtbl->Release(polygon);
- if( ppBuffer ) ID3DXBuffer_Release(ppBuffer);
You aren't setting those pointers to NULL (and your test shows that D3DXCreatePolygon doesn't touch them when the call fails), so those ifs actually are protecting nothing.
In patch 1/2, LockVertex/IndexBuffer should not fail in normal circumstances, so it's probably better to use ERR instead of TRACE there.
Also, please, try to fixup the code style. E.g. the preferred style for 'if's and loops is to have a whitespace between the keyword and the '(' and no whitespace between the parentheses and the condition. Stick with that. Don't use hungarian notation (ppBuffer ...), fix whitespaces around operators, etc
+ ref = polygon->lpVtbl->AddRef(polygon); + ok(ref == 2, "Expected refcount = 2, received %d", ref);
Let me add one point. I don't see a reason why you'd check AddRef here. It just increase the refcount for the polygon, if you don't call Release a second time the memory will be lost. You may check ref = IDirect3DDevice9_Release(device); that way you should see, how many resources you leak (only works for objects which hold a device reference).
Cheers Rico