From 09bb7569f40adf57af93413d8a1e4ec4407e4a4d Mon Sep 17 00:00:00 2001
From: RElesgoe <xboi209@gmail.com>
Date: Tue, 23 Aug 2016 20:22:38 -0700
Subject: [PATCH] Fix memory leak in apireg_send() when returning without
 calling packet_del_ref() on variable 'p'

---
 src/bnetd/handle_apireg.cpp | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/src/bnetd/handle_apireg.cpp b/src/bnetd/handle_apireg.cpp
index 0f51c23..bbe536c 100644
--- a/src/bnetd/handle_apireg.cpp
+++ b/src/bnetd/handle_apireg.cpp
@@ -455,13 +455,10 @@ namespace pvpgn
 
 		static int apireg_send(t_connection * conn, char const * command)
 		{
-			t_packet * p;
 			char data[MAX_IRC_MESSAGE_LEN + 1];
 			unsigned len = 0;
 			t_elem * curr;
 
-			p = packet_create(packet_class_raw);
-
 			if (command)
 				len = (std::strlen(command));
 
@@ -473,11 +470,14 @@ namespace pvpgn
 				std::sprintf(data, "%s", command);
 			}
 
-			packet_set_size(p, 0);
-			packet_append_data(p, data, len);
-			DEBUG2("[{}] sent \"{}\"", conn_get_socket(conn), data);
-			conn_push_outqueue(conn, p);
-			packet_del_ref(p);
+			{
+				t_packet* const p = packet_create(packet_class_raw);
+				packet_set_size(p, 0);
+				packet_append_data(p, data, len);
+				DEBUG2("[{}] sent \"{}\"", conn_get_socket(conn), data);
+				conn_push_outqueue(conn, p);
+				packet_del_ref(p);
+			}
 
 			/* In apiregister server we must destroy apiregmember and connection after send packet */