diff options
author | sfan5 <sfan5@live.de> | 2022-03-02 17:46:27 +0100 |
---|---|---|
committer | sfan5 <sfan5@live.de> | 2022-03-02 17:49:45 +0100 |
commit | f2d1295fe646105f1b98b0c204f47f781336e211 (patch) | |
tree | 061d6fb263438f08ce3d1b6cc364ac6b008be2a4 | |
parent | 04bd253390cc6c67a555e4837e7e48d524fdf014 (diff) | |
download | minetest-f2d1295fe646105f1b98b0c204f47f781336e211.tar.gz minetest-f2d1295fe646105f1b98b0c204f47f781336e211.tar.bz2 minetest-f2d1295fe646105f1b98b0c204f47f781336e211.zip |
Fix segfault with autoscale_mode (again)
closes #12100
This time add some asserts so there is no misunderstanding about the NULL-ness of layer->texture.
-rw-r--r-- | src/nodedef.cpp | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/nodedef.cpp b/src/nodedef.cpp index fe0cc4bb0..c4a4f4461 100644 --- a/src/nodedef.cpp +++ b/src/nodedef.cpp @@ -675,7 +675,7 @@ static void fillTileAttribs(ITextureSource *tsrc, TileLayer *layer, bool has_scale = tiledef.scale > 0; bool use_autoscale = tsettings.autoscale_mode == AUTOSCALE_FORCE || (tsettings.autoscale_mode == AUTOSCALE_ENABLE && !has_scale); - if (use_autoscale) { + if (use_autoscale && layer->texture) { auto texture_size = layer->texture->getOriginalSize(); float base_size = tsettings.node_texture_size; float size = std::fmin(texture_size.Width, texture_size.Height); @@ -711,6 +711,7 @@ static void fillTileAttribs(ITextureSource *tsrc, TileLayer *layer, // Animation parameters int frame_count = 1; if (layer->material_flags & MATERIAL_FLAG_ANIMATION) { + assert(layer->texture); int frame_length_ms; tiledef.animation.determineParams(layer->texture->getOriginalSize(), &frame_count, &frame_length_ms, NULL); @@ -721,14 +722,13 @@ static void fillTileAttribs(ITextureSource *tsrc, TileLayer *layer, if (frame_count == 1) { layer->material_flags &= ~MATERIAL_FLAG_ANIMATION; } else { - std::ostringstream os(std::ios::binary); - if (!layer->frames) { + assert(layer->texture); + if (!layer->frames) layer->frames = new std::vector<FrameSpec>(); - } layer->frames->resize(frame_count); + std::ostringstream os(std::ios::binary); for (int i = 0; i < frame_count; i++) { - FrameSpec frame; os.str(""); |