shithub: riscv

Download patch

ref: 285d96be4d642def1221e184f63bb9b75df75071
parent: fa1f9f7ca6d2c7a6e31ef4612de4cf9653b84f7a
author: cinap_lenrek <[email protected]>
date: Wed Oct 7 20:37:54 EDT 2015

doom: fix bogus pointer arithmetic, do sfx initialization in two passes for linked sounds

--- a/sys/src/games/doom/i_sound.c
+++ b/sys/src/games/doom/i_sound.c
@@ -135,17 +135,20 @@
 	/* Initialize external data (all sounds) at start, keep static. */
 	for (i=1 ; i<NUMSFX ; i++)
 	{
-		/* Alias? Example is the chaingun sound linked to pistol. */
 		if (!S_sfx[i].link)
 		{
 			/* Load data from WAD file. */
 			S_sfx[i].data = getsfx( S_sfx[i].name, &lengths[i] );
 		}
-		else
+	}
+	/* Alias? Example is the chaingun sound linked to pistol. */
+	for (i=1 ; i<NUMSFX ; i++)
+	{
+		if (S_sfx[i].link)
 		{
 			/* Previously loaded already? */
 			S_sfx[i].data = S_sfx[i].link->data;
-			lengths[i] = lengths[(S_sfx[i].link - S_sfx)/sizeof(sfxinfo_t)];
+			lengths[i] = lengths[S_sfx[i].link - S_sfx];
 		}
 	}