Browse Source

enet: Fix a memory leak when peer:send fails (thanks pfirsich!)

Alex Szpakowski 7 years ago
parent
commit
08b3635e4e
1 changed files with 8 additions and 2 deletions
  1. 8 2
      src/libraries/enet/enet.cpp

+ 8 - 2
src/libraries/enet/enet.cpp

@@ -712,8 +712,14 @@ static int peer_send(lua_State *l) {
 	ENetPacket *packet = read_packet(l, 2, &channel_id);
 	ENetPacket *packet = read_packet(l, 2, &channel_id);
 
 
 	// printf("sending, channel_id=%d\n", channel_id);
 	// printf("sending, channel_id=%d\n", channel_id);
-	enet_peer_send(peer, channel_id, packet);
-	return 0;
+	int ret = enet_peer_send(peer, channel_id, packet);
+	if (ret < 0) {
+		enet_packet_destroy(packet);
+	}
+
+	lua_pushinteger(l, ret);
+
+	return 1;
 }
 }
 
 
 static const struct luaL_Reg enet_funcs [] = {
 static const struct luaL_Reg enet_funcs [] = {