[nexuiz-data] 07/17: Add patch to avoid weird precedence in fteqcc (Closes: #668349)

Simon McVittie smcv at debian.org
Tue Jan 9 09:56:38 UTC 2018


This is an automated email from the git hooks/post-receive script.

smcv pushed a commit to annotated tag debian/2.5.2-7
in repository nexuiz-data.

commit 8743624a56cceab9468e19f8d036e7b8fc8ee1ab
Author: Simon McVittie <smcv at debian.org>
Date:   Tue Jan 2 09:45:01 2018 +0000

    Add patch to avoid weird precedence in fteqcc (Closes: #668349)
---
 debian/changelog                                   |   2 +
 ...entheses-around-array-member-dereferences.patch | 208 +++++++++++++++++++++
 debian/patches/series                              |   1 +
 3 files changed, 211 insertions(+)

diff --git a/debian/changelog b/debian/changelog
index b4bfcd8..e7e93a1 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -12,6 +12,8 @@ nexuiz-data (2.5.2-7) UNRELEASED; urgency=low
     Apply patch from Reiner Herrmann for locale-independent sorting
     (Closes: #808652)
   * Add DEP-3 patch metadata
+  * Put-parentheses-around-array-member-dereferences.patch:
+    Add patch to avoid weird precedence in fteqcc (Closes: #668349)
 
  -- Anton Balashov <sicness at darklogic.ru>  Fri, 23 Aug 2013 09:18:43 +0400
 
diff --git a/debian/patches/Put-parentheses-around-array-member-dereferences.patch b/debian/patches/Put-parentheses-around-array-member-dereferences.patch
new file mode 100644
index 0000000..3d50d1b
--- /dev/null
+++ b/debian/patches/Put-parentheses-around-array-member-dereferences.patch
@@ -0,0 +1,208 @@
+From: Simon McVittie <smcv at debian.org>
+Date: Tue, 2 Jan 2018 09:31:51 +0000
+Subject: Put parentheses around array member dereferences
+
+This avoids precedence issues in newer versions of fteqcc.
+
+Similar in concept to
+https://gitlab.com/xonotic/xonotic-data.pk3dir/commit/d27a9970837d9430120bc4dbe0fa873ecce87450
+in Xonotic, although the lines involved are unrelated.
+
+Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=668349
+Forwarded: no, Nexuiz Classic is unmaintained upstream
+---
+ data/qcsrc/client/sbar.qc            | 18 +++++++++---------
+ data/qcsrc/server/cl_weaponsystem.qc |  4 ++--
+ data/qcsrc/server/g_damage.qc        |  4 ++--
+ data/qcsrc/server/scores.qc          | 12 ++++++------
+ data/qcsrc/server/w_common.qc        | 20 ++++++++++----------
+ 5 files changed, 29 insertions(+), 29 deletions(-)
+
+diff --git a/data/qcsrc/client/sbar.qc b/data/qcsrc/client/sbar.qc
+index 3c3fd17..715f0e0 100644
+--- a/data/qcsrc/client/sbar.qc
++++ b/data/qcsrc/client/sbar.qc
+@@ -323,8 +323,8 @@ float Sbar_ComparePlayerScores(entity left, entity right)
+ 		return false;
+ 	}
+ 
+-	vl = left.scores[ps_primary];
+-	vr = right.scores[ps_primary];
++	vl = left.(scores[ps_primary]);
++	vr = right.(scores[ps_primary]);
+ 	if(scores_flags[ps_primary] & SFL_ZERO_IS_WORST)
+ 	{
+ 		if(vl == 0 && vr != 0)
+@@ -337,8 +337,8 @@ float Sbar_ComparePlayerScores(entity left, entity right)
+ 	if(vl < vr)
+ 		return IS_DECREASING(scores_flags[ps_primary]);
+ 
+-	vl = left.scores[ps_secondary];
+-	vr = right.scores[ps_secondary];
++	vl = left.(scores[ps_secondary]);
++	vr = right.(scores[ps_secondary]);
+ 	if(scores_flags[ps_secondary] & SFL_ZERO_IS_WORST)
+ 	{
+ 		if(vl == 0 && vr != 0)
+@@ -375,15 +375,15 @@ float Sbar_CompareTeamScores(entity left, entity right)
+ 	if(right.team == COLOR_SPECTATOR)
+ 		return 0;
+ 
+-	vl = left.teamscores[ts_primary];
+-	vr = right.teamscores[ts_primary];
++	vl = left.(teamscores[ts_primary]);
++	vr = right.(teamscores[ts_primary]);
+ 	if(vl > vr)
+ 		return IS_INCREASING(teamscores_flags[ts_primary]);
+ 	if(vl < vr)
+ 		return IS_DECREASING(teamscores_flags[ts_primary]);
+ 
+-	vl = left.teamscores[ts_secondary];
+-	vr = right.teamscores[ts_secondary];
++	vl = left.(teamscores[ts_secondary]);
++	vr = right.(teamscores[ts_secondary]);
+ 	if(vl > vr)
+ 		return IS_INCREASING(teamscores_flags[ts_secondary]);
+ 	if(vl < vr)
+@@ -1305,7 +1305,7 @@ void Sbar_Score()
+ 		if(pl == me)
+ 			pl = pl.sort_next;
+ 		if(scores_flags[ps_primary] & SFL_ZERO_IS_WORST)
+-			if(pl.scores[ps_primary] == 0)
++			if(pl.(scores[ps_primary]) == 0)
+ 				pl = world;
+ 
+ 		score = me.(scores[ps_primary]);
+diff --git a/data/qcsrc/server/cl_weaponsystem.qc b/data/qcsrc/server/cl_weaponsystem.qc
+index 9002518..13e0502 100644
+--- a/data/qcsrc/server/cl_weaponsystem.qc
++++ b/data/qcsrc/server/cl_weaponsystem.qc
+@@ -150,8 +150,8 @@ void W_SetupShot_Dir_ProjectileSize(entity ent, vector s_forward, vector mi, vec
+ 	// Track max damage and set the stat to be sent later in g_world.qc
+ 	if not(inWarmupStage)
+ 	{
+-		ent.max_damage[ent.weapon] += maxdamage;
+-		ent.maxdamage_fired = ent.weapon + 64 * rint(ent.max_damage[ent.weapon]);
++		ent.(max_damage[ent.weapon]) += maxdamage;
++		ent.maxdamage_fired = ent.weapon + 64 * rint(ent.(max_damage[ent.weapon]));
+ 	}
+ 
+ 	W_HitPlotAnalysis(ent, v_forward, v_right, v_up);
+diff --git a/data/qcsrc/server/g_damage.qc b/data/qcsrc/server/g_damage.qc
+index 4394741..513ff29 100644
+--- a/data/qcsrc/server/g_damage.qc
++++ b/data/qcsrc/server/g_damage.qc
+@@ -989,8 +989,8 @@ void Damage_RecordDamage(entity attacker, float deathtype, float damage)
+ 	if(clienttype(attacker) == CLIENTTYPE_REAL)
+ 	{
+ 		// Track damage done and update the stat to be sent later in g_world.qc
+-		attacker.actual_damage[weaponid] += damage;
+-		attacker.damage_hits = weaponid + 64 * rint(attacker.actual_damage[weaponid]);
++		attacker.(actual_damage[weaponid]) += damage;
++		attacker.damage_hits = weaponid + 64 * rint(attacker.(actual_damage[weaponid]));
+ 	}
+ }
+ 
+diff --git a/data/qcsrc/server/scores.qc b/data/qcsrc/server/scores.qc
+index d21ab95..07d92c6 100644
+--- a/data/qcsrc/server/scores.qc
++++ b/data/qcsrc/server/scores.qc
+@@ -56,7 +56,7 @@ float TeamScore_SendEntity(entity to, float sendflags)
+ 
+ 	longflags = 0;
+ 	for(i = 0, p = 1; i < MAX_TEAMSCORE; ++i, p *= 2)
+-		if(self.teamscores[i] > 127 || self.teamscores[i] <= -128)
++		if(self.(teamscores[i]) > 127 || self.(teamscores[i]) <= -128)
+ 			longflags |= p;
+ 
+ #if MAX_TEAMSCORE <= 8
+@@ -70,9 +70,9 @@ float TeamScore_SendEntity(entity to, float sendflags)
+ 		if(sendflags & p)
+ 		{
+ 			if(longflags & p)
+-				WriteInt24_t(MSG_ENTITY, self.teamscores[i]);
++				WriteInt24_t(MSG_ENTITY, self.(teamscores[i]));
+ 			else
+-				WriteChar(MSG_ENTITY, self.teamscores[i]);
++				WriteChar(MSG_ENTITY, self.(teamscores[i]));
+ 		}
+ 
+ 	return TRUE;
+@@ -216,7 +216,7 @@ float PlayerScore_SendEntity(entity to, float sendflags)
+ 
+ 	longflags = 0;
+ 	for(i = 0, p = 1; i < MAX_SCORE; ++i, p *= 2)
+-		if(self.scores[i] > 127 || self.scores[i] <= -128)
++		if(self.(scores[i]) > 127 || self.(scores[i]) <= -128)
+ 			longflags |= p;
+ 
+ #if MAX_SCORE <= 8
+@@ -230,9 +230,9 @@ float PlayerScore_SendEntity(entity to, float sendflags)
+ 		if(sendflags & p)
+ 		{
+ 			if(longflags & p)
+-				WriteInt24_t(MSG_ENTITY, self.scores[i]);
++				WriteInt24_t(MSG_ENTITY, self.(scores[i]));
+ 			else
+-				WriteChar(MSG_ENTITY, self.scores[i]);
++				WriteChar(MSG_ENTITY, self.(scores[i]));
+ 		}
+ 
+ 	return TRUE;
+diff --git a/data/qcsrc/server/w_common.qc b/data/qcsrc/server/w_common.qc
+index e88625d..119d22b 100644
+--- a/data/qcsrc/server/w_common.qc
++++ b/data/qcsrc/server/w_common.qc
+@@ -156,14 +156,14 @@ void FireRailgunBullet (vector start, vector end, float bdamage, float bforce, f
+ 	if not(inWarmupStage)
+ 	if not(self.isbot)
+ 	{
+-		self.bullets_fired[self.weapon] += 1;
++		self.(bullets_fired[self.weapon]) += 1;
+ 
+ 		if(did_hit)
+-			self.bullets_hit[self.weapon] += 1;
++			self.(bullets_hit[self.weapon]) += 1;
+ 
+ 		// update the client and store in addstat() in g_world
+-		self.damage_hits = self.weapon + 64 * rint(self.bullets_hit[self.weapon]);
+-		self.maxdamage_fired = self.weapon + 64 * rint(self.bullets_fired[self.weapon]);
++		self.damage_hits = self.weapon + 64 * rint(self.(bullets_hit[self.weapon]));
++		self.maxdamage_fired = self.weapon + 64 * rint(self.(bullets_fired[self.weapon]));
+ 	}
+ 
+ 	// we're done with the explosion entity, remove it
+@@ -223,9 +223,9 @@ void W_BallisticBullet_Hit (void)
+ 		if not(self.owner.isbot)
+ 		{
+ 			if(hit)
+-				self.owner.bullets_hit[self.owner.weapon] += 1;
++				self.owner.(bullets_hit[self.owner.weapon]) += 1;
+ 			// update the client
+-			self.owner.damage_hits = self.owner.weapon + 64 * rint(self.owner.bullets_hit[self.owner.weapon]);
++			self.owner.damage_hits = self.owner.weapon + 64 * rint(self.owner.(bullets_hit[self.owner.weapon]));
+ 		}
+ 
+ 		//sound (self, CHAN_PROJECTILE, "weapons/electro_impact.wav", VOL_BASE, ATTN_NORM);
+@@ -391,8 +391,8 @@ void fireBallisticBullet(vector start, vector dir, float spread, float pSpeed, f
+ 	if not(inWarmupStage)
+ 	if not(self.isbot)
+ 	{
+-		self.bullets_fired[self.weapon] += 1;
+-		self.maxdamage_fired = self.weapon + 64 * rint(self.bullets_fired[self.weapon]);
++		self.(bullets_fired[self.weapon]) += 1;
++		self.maxdamage_fired = self.weapon + 64 * rint(self.(bullets_fired[self.weapon]));
+ 	}
+ 
+ 	if(cvar("g_antilag_bullets"))
+@@ -443,8 +443,8 @@ void fireBallisticBullet(vector start, vector dir, float spread, float pSpeed, f
+ 			if not(inWarmupStage)
+ 			if not(self.isbot)
+ 			{
+-				self.bullets_fired[self.weapon] += 1;
+-				self.maxdamage_fired = self.weapon + 64 * rint(self.bullets_fired[self.weapon]);
++				self.(bullets_fired[self.weapon]) += 1;
++				self.maxdamage_fired = self.weapon + 64 * rint(self.(bullets_fired[self.weapon]));
+ 			}
+ 
+ 			if(vlen(trace_endpos - self.origin) > 16)
diff --git a/debian/patches/series b/debian/patches/series
index d19e688..f60d68f 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -6,3 +6,4 @@
 exclude_textures_from_data.pk3.diff
 windowed_by_default.diff
 reproducible_build.diff
+Put-parentheses-around-array-member-dereferences.patch

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/nexuiz-data.git



More information about the Pkg-games-commits mailing list