From f9b1af1b19d7afafb605347a53085b818adf1ce6 Mon Sep 17 00:00:00 2001 From: Justin Date: Mon, 26 Dec 2011 12:53:16 -0700 Subject: [PATCH 1/3] fixed null pointer exceptions during save and initializing regions --- TShockAPI/BackupManager.cs | 3 ++- TShockAPI/DB/RegionManager.cs | 18 +++++++++++++----- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/TShockAPI/BackupManager.cs b/TShockAPI/BackupManager.cs index e56bbffa..bd2e6f56 100644 --- a/TShockAPI/BackupManager.cs +++ b/TShockAPI/BackupManager.cs @@ -69,7 +69,8 @@ namespace TShockAPI foreach (TSPlayer player in TShock.Players) { - if (player.IsLoggedIn) + // prevent null point exceptions + if (player != null && player.IsLoggedIn) { TShock.InventoryDB.InsertPlayerData(player); } diff --git a/TShockAPI/DB/RegionManager.cs b/TShockAPI/DB/RegionManager.cs index da2f7246..ad3ea38c 100644 --- a/TShockAPI/DB/RegionManager.cs +++ b/TShockAPI/DB/RegionManager.cs @@ -664,12 +664,20 @@ namespace TShockAPI.DB public void SetAllowedGroups( String groups ) { - List groupArr = groups.Split(',').ToList(); - - for (int i = 0; i < groupArr.Count; i++) - groupArr[i] = groupArr[i].Trim(); + // prevent null pointer exceptions + if (!string.IsNullOrEmpty(groups)) + { + List groupArr = groups.Split(',').ToList(); - AllowedGroups = groupArr; + for (int i = 0; i < groupArr.Count; i++) + groupArr[i] = groupArr[i].Trim(); + + AllowedGroups = groupArr; + } + else + { + AllowedGroups = new List(); + } } public void RemoveID(int id) From 77af8964275bff04d33c0c2e54e88d5fb9bdf36a Mon Sep 17 00:00:00 2001 From: Deathmax Date: Tue, 27 Dec 2011 22:32:05 +0800 Subject: [PATCH 2/3] Remove RCON code that may overflow --- TShockAPI/TSPlayer.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TShockAPI/TSPlayer.cs b/TShockAPI/TSPlayer.cs index d38c13fd..def97382 100644 --- a/TShockAPI/TSPlayer.cs +++ b/TShockAPI/TSPlayer.cs @@ -377,7 +377,7 @@ namespace TShockAPI public override void SendMessage(string msg, byte red, byte green, byte blue) { Console.WriteLine(msg); - RconHandler.Response += msg + "\n"; + //RconHandler.Response += msg + "\n"; } public void SetFullMoon(bool fullmoon) From d92537fd87dd61a72ebcf2927a1e1a4f7d53f117 Mon Sep 17 00:00:00 2001 From: Zack Date: Tue, 27 Dec 2011 09:40:45 -0500 Subject: [PATCH 3/3] Moved the else from Midas' commit that reset the groups allowed in the event of an error, we can just ignore it instead of resetting. Move initialization of the list to the constructor. --- TShockAPI/DB/RegionManager.cs | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/TShockAPI/DB/RegionManager.cs b/TShockAPI/DB/RegionManager.cs index ad3ea38c..44bcdb91 100644 --- a/TShockAPI/DB/RegionManager.cs +++ b/TShockAPI/DB/RegionManager.cs @@ -618,6 +618,7 @@ namespace TShockAPI.DB DisableBuild = true; WorldID = string.Empty; AllowedIDs = new List(); + AllowedGroups = new List(); } public bool InArea(Rectangle point) @@ -662,8 +663,8 @@ namespace TShockAPI.DB AllowedIDs = id_list; } - public void SetAllowedGroups( String groups ) - { + public void SetAllowedGroups( String groups ) + { // prevent null pointer exceptions if (!string.IsNullOrEmpty(groups)) { @@ -674,11 +675,7 @@ namespace TShockAPI.DB AllowedGroups = groupArr; } - else - { - AllowedGroups = new List(); - } - } + } public void RemoveID(int id) {