aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsfan5 <sfan5@live.de>2022-03-02 17:46:27 +0100
committersfan5 <sfan5@live.de>2022-03-02 17:49:45 +0100
commitf2d1295fe646105f1b98b0c204f47f781336e211 (patch)
tree061d6fb263438f08ce3d1b6cc364ac6b008be2a4
parent04bd253390cc6c67a555e4837e7e48d524fdf014 (diff)
downloadminetest-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.cpp10
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("");