From 3e5b0c45318d77f594d4ae71596c5d0fcc5752e8 Mon Sep 17 00:00:00 2001
From: mazmazz <mar.marcoz@outlook.com>
Date: Thu, 2 May 2019 18:31:51 -0400
Subject: [PATCH] Remove MP3 widechar tag searching

1. It's slow, 2. It's incorrect
---
 src/sdl/mixer_sound.c | 56 -------------------------------------------
 1 file changed, 56 deletions(-)

diff --git a/src/sdl/mixer_sound.c b/src/sdl/mixer_sound.c
index dde62fc7a2..7b5a95a454 100644
--- a/src/sdl/mixer_sound.c
+++ b/src/sdl/mixer_sound.c
@@ -908,15 +908,6 @@ boolean I_LoadSong(char *data, size_t len)
 	const size_t key3len = strlen(key3);
 	const size_t key4len = strlen(key4);
 
-	// for mp3 wide chars
-	const char *key1w = "L\0O\0O\0P\0";
-	const char *key2w = "P\0O\0I\0N\0T\0\0\0\xFF\xFE";
-	const char *key3w = "M\0S\0\0\0\xFF\xFE";
-	const char *key4w = "L\0E\0N\0G\0T\0H\0M\0S\0\0\0\xFF\xFE";
-	const char *wterm = "\0\0";
-	char wval[10];
-
-	size_t wstart, wp;
 	char *p = data;
 	SDL_RWops *rw;
 
@@ -1067,53 +1058,6 @@ boolean I_LoadSong(char *data, size_t len)
 			p += key4len; // skip LENGTHMS
 			song_length = (float)(atoi(p) / 1000.0L);
 		}
-		// below: search MP3 or other tags that use wide char encoding
-		else if (fpclassify(loop_point) == FP_ZERO && !memcmp(p, key1w, key1len*2)) // LOOP wide char
-		{
-			p += key1len*2;
-			if (!memcmp(p, key2w, (key2len+1)*2)) // POINT= wide char
-			{
-				p += (key2len+1)*2;
-				wstart = (size_t)p;
-				wp = 0;
-				while (wp < 9 && memcmp(p, wterm, 2))
-				{
-					wval[wp] = *p;
-					p += 2;
-					wp = ((size_t)(p-wstart))/2;
-				}
-				wval[min(wp, 9)] = 0;
-				loop_point = (float)((44.1L+atoi(wval) / 44100.0L));
-			}
-			else if (!memcmp(p, key3w, (key3len+1)*2)) // MS= wide char
-			{
-				p += (key3len+1)*2;
-				wstart = (size_t)p;
-				wp = 0;
-				while (wp < 9 && memcmp(p, wterm, 2))
-				{
-					wval[wp] = *p;
-					p += 2;
-					wp = ((size_t)(p-wstart))/2;
-				}
-				wval[min(wp, 9)] = 0;
-				loop_point = (float)(atoi(wval) / 1000.0L);
-			}
-		}
-		else if (fpclassify(song_length) == FP_ZERO && !memcmp(p, key4w, (key4len+1)*2)) // LENGTHMS= wide char
-		{
-			p += (key4len+1)*2;
-			wstart = (size_t)p;
-			wp = 0;
-			while (wp < 9 && memcmp(p, wterm, 2))
-			{
-				wval[wp] = *p;
-				p += 2;
-				wp = ((size_t)(p-wstart))/2;
-			}
-			wval[min(wp, 9)] = 0;
-			song_length = (float)(atoi(wval) / 1000.0L);
-		}
 
 		if (fpclassify(loop_point) != FP_ZERO && fpclassify(song_length) != FP_ZERO && song_length > loop_point) // Got what we needed
 			// the last case is a sanity check, in case the wide char searches were false matches.
-- 
GitLab