forked from Mirrorlandia_minetest/irrlicht
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 7298b46504c109b13bab26c32d4b94f6985074d5
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