From 868a1a5c13a0c086aa1ff3414a1eb12076821c27 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?B=C5=99etislav=20=C5=A0tec?= <valsiterb@gmail.com>
Date: Sun, 2 Aug 2015 18:42:03 +0200
Subject: [PATCH] src/client/tile.cpp: Fix reference counting

---
 src/client/tile.cpp | 24 +++++++++++++-----------
 1 file changed, 13 insertions(+), 11 deletions(-)

diff --git a/src/client/tile.cpp b/src/client/tile.cpp
index 03badd817..79ed4a072 100644
--- a/src/client/tile.cpp
+++ b/src/client/tile.cpp
@@ -1011,7 +1011,7 @@ video::IImage* TextureSource::generateImage(const std::string &name)
 
 	std::string last_part_of_name = name.substr(last_separator_pos + 1);
 
-	/* 
+	/*
 		If this name is enclosed in parentheses, generate it
 		and blit it onto the base image
 	*/
@@ -1209,21 +1209,22 @@ bool TextureSource::generateImagePart(std::string part_of_name,
 			s32 frame_count = stoi(sf.next(":"));
 			s32 progression = stoi(sf.next(":"));
 
-			/*
-				Load crack image.
+			if (progression >= 0) {
+				/*
+					Load crack image.
 
-				It is an image with a number of cracking stages
-				horizontally tiled.
-			*/
-			video::IImage *img_crack = m_sourcecache.getOrLoad(
+					It is an image with a number of cracking stages
+					horizontally tiled.
+				*/
+				video::IImage *img_crack = m_sourcecache.getOrLoad(
 					"crack_anylength.png", m_device);
 
-			if (img_crack && progression >= 0)
-			{
-				draw_crack(img_crack, baseimg,
+				if (img_crack) {
+					draw_crack(img_crack, baseimg,
 						use_overlay, frame_count,
 						progression, driver);
-				img_crack->drop();
+					img_crack->drop();
+				}
 			}
 		}
 		/*
@@ -1612,6 +1613,7 @@ bool TextureSource::generateImagePart(std::string part_of_name,
 			if (img) {
 				apply_mask(img, baseimg, v2s32(0, 0), v2s32(0, 0),
 						img->getDimension());
+				img->drop();
 			} else {
 				errorstream << "generateImage(): Failed to load \""
 						<< filename << "\".";
-- 
GitLab