浏览代码

BETA: Misc fixes:
* If there is a document exception server shouldn't NPE:
1. EnchantHPBonusData
1. ExperienceTable
1. NpcWalkerRoutesTable
1. PetDataTable
* NPE vulnerability:
1. DayNightSpawnManager
1. RequestPreviewItem
* Static variables shouldn't be initialized in instances.
1. HandysBlockCheckerManager (JavaDoc typo fixes too)
1. GMHide
1. SSQInfo
* Variable can't be null at this point:
1. L2PcInstance (minor improvement too)

Zoey76 13 年之前
父节点
当前提交
7a57c3d1cd

+ 1 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/datatables/EnchantHPBonusData.java

@@ -78,6 +78,7 @@ public class EnchantHPBonusData
 			catch (Exception e)
 			{
 				_log.log(Level.WARNING, "Could not parse enchantHPBonus.xml file: " + e.getMessage(), e);
+				return;
 			}
 			
 			for (Node n = doc.getFirstChild(); n != null; n = n.getNextSibling())

+ 2 - 1
L2J_Server_BETA/java/com/l2jserver/gameserver/datatables/ExperienceTable.java

@@ -31,7 +31,6 @@ import com.l2jserver.Config;
 
 /**
  * @author mrTJO
- *
  */
 public class ExperienceTable
 {
@@ -67,10 +66,12 @@ public class ExperienceTable
 			catch (IOException e)
 			{
 				_log.log(Level.WARNING, "Could not read experience.xml table: " + e.getMessage(), e);
+				return;
 			}
 			catch (Exception e)
 			{
 				_log.log(Level.WARNING, "Could not parse experience.xml table: " + e.getMessage(), e);
+				return;
 			}
 			
 			Node table = doc.getFirstChild();

+ 1 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/datatables/NpcWalkerRoutesTable.java

@@ -73,6 +73,7 @@ public class NpcWalkerRoutesTable
 			catch (Exception e)
 			{
 				_log.log(Level.WARNING, "Could not parse WalkerRoutes.xml file: " + e.getMessage(), e);
+				return;
 			}
 			
 			Node n = doc.getFirstChild();

+ 1 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/datatables/PetDataTable.java

@@ -67,6 +67,7 @@ public class PetDataTable
 			catch (Exception e)
 			{
 				_log.log(Level.WARNING, "Could not parse PetData.xml file: " + e.getMessage(), e);
+				return;
 			}
 			
 			Node n = doc.getFirstChild();

+ 7 - 5
L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/DayNightSpawnManager.java

@@ -184,11 +184,11 @@ public class DayNightSpawnManager
 	{
 		try
 		{
+			L2RaidBossInstance boss;
 			for (L2Spawn spawn : _bosses.keySet())
 			{
-				L2RaidBossInstance boss = _bosses.get(spawn);
-				
-				if (boss == null && mode == 1)
+				boss = _bosses.get(spawn);
+				if ((boss == null) && (mode == 1))
 				{
 					boss = (L2RaidBossInstance) spawn.doSpawn();
 					RaidBossSpawnManager.getInstance().notifySpawnNightBoss(boss);
@@ -197,10 +197,12 @@ public class DayNightSpawnManager
 					continue;
 				}
 				
-				if (boss == null && mode == 0)
+				if ((boss == null) && (mode == 0))
+				{
 					continue;
+				}
 				
-				if (boss.getNpcId() == 25328 && boss.getRaidStatus().equals(RaidBossSpawnManager.StatusEnum.ALIVE))
+				if ((boss != null) && (boss.getNpcId() == 25328) && boss.getRaidStatus().equals(RaidBossSpawnManager.StatusEnum.ALIVE))
 					handleHellmans(boss, mode);
 				return;
 			}

+ 6 - 11
L2J_Server_BETA/java/com/l2jserver/gameserver/instancemanager/HandysBlockCheckerManager.java

@@ -38,18 +38,15 @@ import com.l2jserver.gameserver.network.serverpackets.L2GameServerPacket;
 import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
 
 /**
+ * This class manage the player add/remove, team change and<br>
+ * event arena status, as the clearance of the participants<br>
+ * list or liberate the arena.
  * @author BiggBoss
  */
 public final class HandysBlockCheckerManager 
 {
-	/*
-	 * This class manage the player add/remove, team change and
-	 * event arena status, as the clearance of the participants
-	 * list or liberate the arena 
-	 */
-	
 	// All the participants and their team classifed by arena
-	private static ArenaParticipantsHolder[] _arenaPlayers;
+	private static ArenaParticipantsHolder[] _arenaPlayers = new ArenaParticipantsHolder[4];
 	
 	// Arena votes to start the game
 	private static TIntIntHashMap _arenaVotes = new TIntIntHashMap();
@@ -61,7 +58,7 @@ public final class HandysBlockCheckerManager
 	private static FastList<Integer> _registrationPenalty = new FastList<Integer>();
 	
 	/**
-	 * Return the number of event-start votes for the spcified
+	 * Return the number of event-start votes for the specified
 	 * arena id
 	 * @param arenaId
 	 * @return int (number of votes)
@@ -134,8 +131,6 @@ public final class HandysBlockCheckerManager
 	 */
 	public void startUpParticipantsQueue()
 	{
-		_arenaPlayers = new ArenaParticipantsHolder[4];
-		
 		for(int i = 0; i < 4; ++i)
 		{
 			_arenaPlayers[i] = new ArenaParticipantsHolder(i);
@@ -143,7 +138,7 @@ public final class HandysBlockCheckerManager
 	}
 	
 	/**
-	 * Add the player to the specified arena (throught the specified
+	 * Add the player to the specified arena (through the specified
 	 * arena manager) and send the needed server ->  client packets
 	 * @param player
 	 * @param arenaId

+ 1 - 5
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java

@@ -14304,11 +14304,7 @@ public final class L2PcInstance extends L2Playable
 			}
 		}
 		
-		TeleportBookmark tpadd = new TeleportBookmark(id, x, y, z, icon, tag, name);
-		if(tpbookmark == null)
-			tpbookmark = new FastList<TeleportBookmark>();
-		
-		tpbookmark.add(tpadd);
+		tpbookmark.add(new TeleportBookmark(id, x, y, z, icon, tag, name));
 		
 		destroyItem("Consume", getInventory().getItemByItemId(20033).getObjectId(), 1, null, false);
 		

+ 7 - 3
L2J_Server_BETA/java/com/l2jserver/gameserver/network/clientpackets/RequestPreviewItem.java

@@ -139,10 +139,14 @@ public final class RequestPreviewItem extends L2GameClientPacket
 		L2TradeList list = null;
 		
 		// Get the current merchant targeted by the player
-		L2MerchantInstance merchant = (target instanceof L2MerchantInstance) ? (L2MerchantInstance) target : null;
-		
-		List<L2TradeList> lists = TradeController.getInstance().getBuyListByNpcId(merchant.getNpcId());
+		final L2MerchantInstance merchant = (target instanceof L2MerchantInstance) ? (L2MerchantInstance) target : null;
+		if (merchant == null)
+		{
+			_log.warning(getClass().getName() + " Null merchant!");
+			return;
+		}
 		
+		final List<L2TradeList> lists = TradeController.getInstance().getBuyListByNpcId(merchant.getNpcId());
 		if (lists == null)
 		{
 			Util.handleIllegalPlayerAction(_activeChar, "Warning!! Character " + _activeChar.getName() + " of account " + _activeChar.getAccountName() + " sent a false BuyList list_id " + _listId, Config.DEFAULT_PUNISH);

+ 1 - 1
L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/GMHide.java

@@ -23,7 +23,7 @@ package com.l2jserver.gameserver.network.serverpackets;
 public class GMHide extends L2GameServerPacket
 {
 	// cd
-	private static int _mode;
+	private int _mode;
 	
 	
 	/**

+ 1 - 1
L2J_Server_BETA/java/com/l2jserver/gameserver/network/serverpackets/SSQInfo.java

@@ -28,7 +28,7 @@ public class SSQInfo extends L2GameServerPacket
 {
 	private static final String _S__F8_SSQINFO = "[S] 73 SSQInfo";
 	
-	private static int _state = 0;
+	private int _state = 0;
 	
 	public SSQInfo()
 	{