From 0fd1ee03808ee8121e7b65e5c7c9ba19599d185e Mon Sep 17 00:00:00 2001
From: onkrot <vob999@bk.ru>
Date: Sat, 10 Jan 2015 11:05:42 +0000
Subject: [PATCH] Performance fixes.

---
 src/connection.cpp             |  2 +-
 src/debug.cpp                  |  2 +-
 src/guiFormSpecMenu.cpp        | 54 +++++++++++++++++-----------------
 src/inventorymanager.cpp       |  4 +--
 src/main.cpp                   |  1 -
 src/script/cpp_api/s_async.cpp |  2 +-
 src/server.cpp                 |  2 +-
 src/tile.cpp                   |  4 +--
 8 files changed, 35 insertions(+), 36 deletions(-)

diff --git a/src/connection.cpp b/src/connection.cpp
index 02ca91a91..eff8a70d1 100644
--- a/src/connection.cpp
+++ b/src/connection.cpp
@@ -372,7 +372,7 @@ void ReliablePacketBuffer::insert(BufferedPacket &p,u16 next_expected)
 			fprintf(stderr, "Old: seqnum: %05d size: %04d, address: %s\n",
 					readU16(&(i->data[BASE_HEADER_SIZE+1])),i->data.getSize(),
 					i->address.serializeString().c_str());
-			fprintf(stderr, "New: seqnum: %05d size: %04d, address: %s\n",
+			fprintf(stderr, "New: seqnum: %05d size: %04u, address: %s\n",
 					readU16(&(p.data[BASE_HEADER_SIZE+1])),p.data.getSize(),
 					p.address.serializeString().c_str());
 			throw IncomingDataCorruption("duplicated packet isn't same as original one");
diff --git a/src/debug.cpp b/src/debug.cpp
index 8c02f1d6b..3b2fb641a 100644
--- a/src/debug.cpp
+++ b/src/debug.cpp
@@ -130,7 +130,7 @@ void assert_fail(const char *assertion, const char *file,
 		unsigned int line, const char *function)
 {
 	DEBUGPRINT("\nIn thread %lx:\n"
-			"%s:%d: %s: Assertion '%s' failed.\n",
+			"%s:%u: %s: Assertion '%s' failed.\n",
 			(unsigned long)get_current_thread_id(),
 			file, line, function, assertion);
 	
diff --git a/src/guiFormSpecMenu.cpp b/src/guiFormSpecMenu.cpp
index 22fbf0cfc..c85bc16d7 100644
--- a/src/guiFormSpecMenu.cpp
+++ b/src/guiFormSpecMenu.cpp
@@ -374,7 +374,7 @@ void GUIFormSpecMenu::parseCheckbox(parserData* data,std::string element)
 		if (selected == "true")
 			fselected = true;
 
-		std::wstring wlabel = narrow_to_wide(label.c_str());
+		std::wstring wlabel = narrow_to_wide(label);
 
 		core::rect<s32> rect = core::rect<s32>(
 				pos.X, pos.Y + ((imgsize.Y/2) - m_btn_height),
@@ -382,7 +382,7 @@ void GUIFormSpecMenu::parseCheckbox(parserData* data,std::string element)
 				pos.Y + ((imgsize.Y/2) + m_btn_height));
 
 		FieldSpec spec(
-				narrow_to_wide(name.c_str()),
+				narrow_to_wide(name),
 				wlabel, //Needed for displaying text on MSVC
 				wlabel,
 				258+m_fields.size()
@@ -434,7 +434,7 @@ void GUIFormSpecMenu::parseScrollBar(parserData* data, std::string element)
 				core::rect<s32>(pos.X, pos.Y, pos.X + dim.X, pos.Y + dim.Y);
 
 		FieldSpec spec(
-				narrow_to_wide(name.c_str()),
+				narrow_to_wide(name),
 				L"",
 				L"",
 				258+m_fields.size()
@@ -572,10 +572,10 @@ void GUIFormSpecMenu::parseButton(parserData* data,std::string element,
 
 		label = unescape_string(label);
 
-		std::wstring wlabel = narrow_to_wide(label.c_str());
+		std::wstring wlabel = narrow_to_wide(label);
 
 		FieldSpec spec(
-			narrow_to_wide(name.c_str()),
+			narrow_to_wide(name),
 			wlabel,
 			L"",
 			258+m_fields.size()
@@ -697,7 +697,7 @@ void GUIFormSpecMenu::parseTable(parserData* data,std::string element)
 
 		core::rect<s32> rect = core::rect<s32>(pos.X, pos.Y, pos.X+geom.X, pos.Y+geom.Y);
 
-		std::wstring fname_w = narrow_to_wide(name.c_str());
+		std::wstring fname_w = narrow_to_wide(name);
 
 		FieldSpec spec(
 			fname_w,
@@ -771,7 +771,7 @@ void GUIFormSpecMenu::parseTextList(parserData* data,std::string element)
 
 		core::rect<s32> rect = core::rect<s32>(pos.X, pos.Y, pos.X+geom.X, pos.Y+geom.Y);
 
-		std::wstring fname_w = narrow_to_wide(name.c_str());
+		std::wstring fname_w = narrow_to_wide(name);
 
 		FieldSpec spec(
 			fname_w,
@@ -836,7 +836,7 @@ void GUIFormSpecMenu::parseDropDown(parserData* data,std::string element)
 		core::rect<s32> rect = core::rect<s32>(pos.X, pos.Y,
 				pos.X + width, pos.Y + (m_btn_height * 2));
 
-		std::wstring fname_w = narrow_to_wide(name.c_str());
+		std::wstring fname_w = narrow_to_wide(name);
 
 		FieldSpec spec(
 			fname_w,
@@ -899,10 +899,10 @@ void GUIFormSpecMenu::parsePwdField(parserData* data,std::string element)
 
 		label = unescape_string(label);
 
-		std::wstring wlabel = narrow_to_wide(label.c_str());
+		std::wstring wlabel = narrow_to_wide(label);
 
 		FieldSpec spec(
-			narrow_to_wide(name.c_str()),
+			narrow_to_wide(name),
 			wlabel,
 			L"",
 			258+m_fields.size()
@@ -965,12 +965,12 @@ void GUIFormSpecMenu::parseSimpleField(parserData* data,
 	default_val = unescape_string(default_val);
 	label = unescape_string(label);
 
-	std::wstring wlabel = narrow_to_wide(label.c_str());
+	std::wstring wlabel = narrow_to_wide(label);
 
 	FieldSpec spec(
-		narrow_to_wide(name.c_str()),
+		narrow_to_wide(name),
 		wlabel,
-		narrow_to_wide(default_val.c_str()),
+		narrow_to_wide(default_val),
 		258+m_fields.size()
 	);
 
@@ -1055,12 +1055,12 @@ void GUIFormSpecMenu::parseTextArea(parserData* data,
 	default_val = unescape_string(default_val);
 	label = unescape_string(label);
 
-	std::wstring wlabel = narrow_to_wide(label.c_str());
+	std::wstring wlabel = narrow_to_wide(label);
 
 	FieldSpec spec(
-		narrow_to_wide(name.c_str()),
+		narrow_to_wide(name),
 		wlabel,
-		narrow_to_wide(default_val.c_str()),
+		narrow_to_wide(default_val),
 		258+m_fields.size()
 	);
 
@@ -1158,7 +1158,7 @@ void GUIFormSpecMenu::parseLabel(parserData* data,std::string element)
 			// in the integer cases: 0.4 is not exactly
 			// representable in binary floating point.
 			s32 posy = pos.Y + ((float)i) * spacing.Y * 2.0 / 5.0;
-			std::wstring wlabel = narrow_to_wide(lines[i].c_str());
+			std::wstring wlabel = narrow_to_wide(lines[i]);
 			core::rect<s32> rect = core::rect<s32>(
 				pos.X, posy - m_btn_height,
 				pos.X + m_font->getDimension(wlabel.c_str()).Width,
@@ -1279,12 +1279,12 @@ void GUIFormSpecMenu::parseImageButton(parserData* data,std::string element,
 		pressed_image_name = unescape_string(pressed_image_name);
 		label = unescape_string(label);
 
-		std::wstring wlabel = narrow_to_wide(label.c_str());
+		std::wstring wlabel = narrow_to_wide(label);
 
 		FieldSpec spec(
-			narrow_to_wide(name.c_str()),
+			narrow_to_wide(name),
 			wlabel,
-			narrow_to_wide(image_name.c_str()),
+			narrow_to_wide(image_name),
 			258+m_fields.size()
 		);
 		spec.ftype = f_Button;
@@ -1344,7 +1344,7 @@ void GUIFormSpecMenu::parseTabHeader(parserData* data,std::string element)
 		}
 
 		FieldSpec spec(
-			narrow_to_wide(name.c_str()),
+			narrow_to_wide(name),
 			L"",
 			L"",
 			258+m_fields.size()
@@ -1431,16 +1431,16 @@ void GUIFormSpecMenu::parseItemImageButton(parserData* data,std::string element)
 		item.deSerialize(item_name, idef);
 		video::ITexture *texture = idef->getInventoryTexture(item.getDefinition(idef).name, m_gamedef);
 
-		m_tooltips[narrow_to_wide(name.c_str())] =
+		m_tooltips[narrow_to_wide(name)] =
 			TooltipSpec (item.getDefinition(idef).description,
 						m_default_tooltip_bgcolor,
 						m_default_tooltip_color);
 
 		label = unescape_string(label);
 		FieldSpec spec(
-			narrow_to_wide(name.c_str()),
-			narrow_to_wide(label.c_str()),
-			narrow_to_wide(item_name.c_str()),
+			narrow_to_wide(name),
+			narrow_to_wide(label),
+			narrow_to_wide(item_name),
 			258+m_fields.size()
 		);
 
@@ -1550,13 +1550,13 @@ void GUIFormSpecMenu::parseTooltip(parserData* data, std::string element)
 	std::vector<std::string> parts = split(element,';');
 	if (parts.size() == 2) {
 		std::string name = parts[0];
-		m_tooltips[narrow_to_wide(name.c_str())] = TooltipSpec (parts[1], m_default_tooltip_bgcolor, m_default_tooltip_color);
+		m_tooltips[narrow_to_wide(name)] = TooltipSpec (parts[1], m_default_tooltip_bgcolor, m_default_tooltip_color);
 		return;
 	} else if (parts.size() == 4) {
 		std::string name = parts[0];
 		video::SColor tmp_color1, tmp_color2;
 		if ( parseColorString(parts[2], tmp_color1, false) && parseColorString(parts[3], tmp_color2, false) ) {
-			m_tooltips[narrow_to_wide(name.c_str())] = TooltipSpec (parts[1], tmp_color1, tmp_color2);
+			m_tooltips[narrow_to_wide(name)] = TooltipSpec (parts[1], tmp_color1, tmp_color2);
 			return;
 		}
 	}
diff --git a/src/inventorymanager.cpp b/src/inventorymanager.cpp
index 7486cc419..ed18126d0 100644
--- a/src/inventorymanager.cpp
+++ b/src/inventorymanager.cpp
@@ -727,9 +727,9 @@ void ICraftAction::apply(InventoryManager *mgr, ServerActiveObject *player, IGam
 	ItemStack crafted;
 	ItemStack craftresultitem;
 	int count_remaining = count;
-	bool found = getCraftingResult(inv_craft, crafted, false, gamedef);
+	getCraftingResult(inv_craft, crafted, false, gamedef);
 	PLAYER_TO_SA(player)->item_CraftPredict(crafted, player, list_craft, craft_inv);
-	found = !crafted.empty();
+	bool found = !crafted.empty();
 
 	while(found && list_craftresult->itemFits(0, crafted))
 	{
diff --git a/src/main.cpp b/src/main.cpp
index cc89d32ac..8c4cab4e4 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -1871,7 +1871,6 @@ bool ClientLauncher::launch_game(std::wstring *error_message,
 		simple_singleplayer_mode = menudata.simple_singleplayer_mode;
 
 		std::vector<WorldSpec> worldspecs = getAvailableWorlds();
-		worldspecs = getAvailableWorlds();
 
 		if (menudata.selected_world >= 0
 				&& menudata.selected_world < (int)worldspecs.size()) {
diff --git a/src/script/cpp_api/s_async.cpp b/src/script/cpp_api/s_async.cpp
index ef84d5037..de1ebc07b 100644
--- a/src/script/cpp_api/s_async.cpp
+++ b/src/script/cpp_api/s_async.cpp
@@ -247,7 +247,7 @@ void* AsyncWorkerThread::Thread()
 
 	// Register thread for error logging
 	char number[21];
-	snprintf(number, sizeof(number), "%d", threadnum);
+	snprintf(number, sizeof(number), "%u", threadnum);
 	log_register_thread(std::string("AsyncWorkerThread_") + number);
 
 	porting::setThreadName((std::string("AsyncWorkTh_") + number).c_str());
diff --git a/src/server.cpp b/src/server.cpp
index 9d157cb61..c948427ad 100644
--- a/src/server.cpp
+++ b/src/server.cpp
@@ -1508,7 +1508,7 @@ void Server::ProcessData(u8 *data, u32 datasize, u16 peer_id)
 						<<"tried to connect from "<<addr_s<<" "
 						<<"but it was disallowed for the following reason: "
 						<<reason<<std::endl;
-				DenyAccess(peer_id, narrow_to_wide(reason.c_str()));
+				DenyAccess(peer_id, narrow_to_wide(reason));
 				return;
 			}
 		}
diff --git a/src/tile.cpp b/src/tile.cpp
index b20aec54a..560dcddb8 100644
--- a/src/tile.cpp
+++ b/src/tile.cpp
@@ -213,7 +213,7 @@ class SourceImageCache
 
 		// Try to use local texture instead if asked to
 		if(prefer_local){
-			std::string path = getTexturePath(name.c_str());
+			std::string path = getTexturePath(name);
 			if(path != ""){
 				video::IImage *img2 = driver->createImageFromFile(path.c_str());
 				if(img2){
@@ -245,7 +245,7 @@ class SourceImageCache
 			return n->second;
 		}
 		video::IVideoDriver* driver = device->getVideoDriver();
-		std::string path = getTexturePath(name.c_str());
+		std::string path = getTexturePath(name);
 		if(path == ""){
 			infostream<<"SourceImageCache::getOrLoad(): No path found for \""
 					<<name<<"\""<<std::endl;
-- 
GitLab