mirror of
https://github.com/minetest/irrlicht.git
synced 2024-11-05 18:00:41 +01:00
e57a713377
Bitfields for PolygonOffsetDirection, ZWriteEnable and BlendOperation were chosen too small. As we have pre c++11 code and therefore didn't use unsigned qualifiers for enums they were generally signed (up to compiler in theory, but I think they all choose signed). Which means the bitfield also had a sign. So for example setting PolygonOffsetDirection to EPO_FRONT set it to -1 instead of 1. Which then would fail with comparison checks (PolygonOffsetDirection == EPO_FRONT would be false). We kind of got lucky that we usually not checked for the last enum inside Irrlicht, so it worked to due being the "else" case. Or in the ZWriteEnable case the last one was identical to the default return value so it also worked accidentally. But obviously still wrong and user code could be messed up. While at it I also re-ordered SMaterial variable so most bitfield variables are close together again to give compiler at least a chance to use packing. Thought at least in my quick debug compile test it didn't seem to use any packing (but maybe on other compilers). git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@6440 dfc29bdd-3216-0410-991c-e03cc46cb475
5 lines
110 B
Plaintext
5 lines
110 B
Plaintext
Tests finished. 72 tests of 72 passed.
|
|
Compiled as DEBUG
|
|
Test suite pass at GMT Thu Nov 17 16:31:49 2022
|
|
|