r5497 - trunk/data/qcsrc/server

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Tue Jan 13 01:10:15 EST 2009


Author: div0
Date: 2009-01-13 01:10:14 -0500 (Tue, 13 Jan 2009)
New Revision: 5497

Modified:
   trunk/data/qcsrc/server/portals.qc
Log:
can't fix this portal crash without additional info, but detect the bad condition and abort with a backtrace while keeping the server running. If anyone gets one of these backtraces, send it to me together with some lines of backlog.


Modified: trunk/data/qcsrc/server/portals.qc
===================================================================
--- trunk/data/qcsrc/server/portals.qc	2009-01-12 15:29:35 UTC (rev 5496)
+++ trunk/data/qcsrc/server/portals.qc	2009-01-13 06:10:14 UTC (rev 5497)
@@ -84,6 +84,12 @@
 	vector old_yawforward;
 	float planeshift, s, t;
 
+	if not(teleporter.enemy)
+	{
+		backtrace("Portal_TeleportPlayer called without other portal being set. Stop.");
+		return 0;
+	}
+
 	from = teleporter.origin;
 	transform = teleporter.portal_transform;
 
@@ -195,8 +201,21 @@
 
 	if(player.flagcarried)
 		DropFlag(player.flagcarried, player, world);
+
+	if not(teleporter.enemy)
+	{
+		backtrace("Portal_TeleportPlayer ended up without other portal being set BEFORE TeleportPlayer. Stop.");
+		return 0;
+	}
+
 	TeleportPlayer(teleporter, player, to, ang, newvel, teleporter.enemy.absmin, teleporter.enemy.absmax);
 
+	if not(teleporter.enemy)
+	{
+		backtrace("Portal_TeleportPlayer ended up without other portal being set AFTER TeleportPlayer. Stop.");
+		return 0;
+	}
+
 	// reset fade counter
 	teleporter.portal_wants_to_vanish = 0;
 	teleporter.fade_time = time + cvar("g_balance_portal_lifetime");




More information about the nexuiz-commits mailing list