mirror of
https://github.com/minetest/irrlicht.git
synced 2024-12-25 02:00:30 +01:00
Fix CNullDriver::removeTexture() segfault
`Textures` is not an one-to-one mapping.
Minetest still crashes with this commit but that's because
it attempts to double-free a texture.
broken by 7298b46504
This commit is contained in:
parent
f9d7a632f5
commit
679dfd3343
@ -286,10 +286,16 @@ void CNullDriver::removeTexture(ITexture* texture)
|
||||
SSurface s;
|
||||
s.Surface = texture;
|
||||
|
||||
s32 index = Textures.binary_search(s);
|
||||
if (index != -1) {
|
||||
texture->drop();
|
||||
Textures.erase(index);
|
||||
s32 last;
|
||||
s32 first = Textures.binary_search_multi(s, last);
|
||||
if (first == -1)
|
||||
return;
|
||||
for (u32 i = first; i <= (u32)last; i++) {
|
||||
if (Textures[i].Surface == texture) {
|
||||
texture->drop();
|
||||
Textures.erase(i);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user