From f713f5fdebe841bdf08674984a392af095efd80c Mon Sep 17 00:00:00 2001
From: Hanicef <gustaf@hanicef.me>
Date: Fri, 28 Jun 2024 12:37:13 +0200
Subject: [PATCH] Don't traverse the entire HOME directory but for real this
 time

---
 src/dedicated/i_system.c | 14 ++++++++------
 src/sdl/i_system.c       | 13 ++++++++-----
 2 files changed, 16 insertions(+), 11 deletions(-)

diff --git a/src/dedicated/i_system.c b/src/dedicated/i_system.c
index 82dd51be07..1a1db8fb35 100644
--- a/src/dedicated/i_system.c
+++ b/src/dedicated/i_system.c
@@ -1390,8 +1390,8 @@ static const char *searchWad(const char *searchDir)
 
 #define CHECKWADPATH(ret) \
 do { \
-	I_OutputMsg(",%s", returnWadPath); \
-	if (isWadPathOk(returnWadPath)) \
+	I_OutputMsg(",%s", ret); \
+	if (isWadPathOk(ret)) \
 		return ret; \
 } while (0)
 
@@ -1416,7 +1416,9 @@ static const char *locateWad(void)
 #ifndef NOCWD
 	// examine current dir
 	strcpy(returnWadPath, ".");
-	CHECKWADPATH(NULL);
+	I_OutputMsg(",%s", returnWadPath);
+	if (isWadPathOk(returnWadPath))
+		return NULL;
 #endif
 
 #ifdef __APPLE__
@@ -1433,13 +1435,13 @@ static const char *locateWad(void)
 
 #ifndef NOHOME
 	// find in $HOME
-	I_OutputMsg(",HOME/" DEFAULTDIR);
 	if ((envstr = I_GetEnv("HOME")) != NULL)
 	{
-		char *tmp = malloc(strlen(envstr) + sizeof(DEFAULTDIR));
+		char *tmp = malloc(strlen(envstr) + 1 + sizeof(DEFAULTDIR));
 		strcpy(tmp, envstr);
+		strcat(tmp, "/");
 		strcat(tmp, DEFAULTDIR);
-		SEARCHWAD(envstr);
+		CHECKWADPATH(tmp);
 		free(tmp);
 	}
 #endif
diff --git a/src/sdl/i_system.c b/src/sdl/i_system.c
index e28fbd34ab..9fe50a6a23 100644
--- a/src/sdl/i_system.c
+++ b/src/sdl/i_system.c
@@ -3003,8 +3003,8 @@ static const char *searchWad(const char *searchDir)
 
 #define CHECKWADPATH(ret) \
 do { \
-	I_OutputMsg(",%s", returnWadPath); \
-	if (isWadPathOk(returnWadPath)) \
+	I_OutputMsg(",%s", ret); \
+	if (isWadPathOk(ret)) \
 		return ret; \
 } while (0)
 
@@ -3033,7 +3033,9 @@ static const char *locateWad(void)
 #ifndef NOCWD
 	// examine current dir
 	strcpy(returnWadPath, ".");
-	CHECKWADPATH(NULL);
+	I_OutputMsg(",%s", returnWadPath);
+	if (isWadPathOk(returnWadPath))
+		return NULL;
 #endif
 
 #ifdef __APPLE__
@@ -3053,10 +3055,11 @@ static const char *locateWad(void)
 	I_OutputMsg(",HOME/" DEFAULTDIR);
 	if ((envstr = I_GetEnv("HOME")) != NULL)
 	{
-		char *tmp = malloc(strlen(envstr) + sizeof(DEFAULTDIR));
+		char *tmp = malloc(strlen(envstr) + 1 + sizeof(DEFAULTDIR));
 		strcpy(tmp, envstr);
+		strcat(tmp, "/");
 		strcat(tmp, DEFAULTDIR);
-		SEARCHWAD(envstr);
+		CHECKWADPATH(tmp);
 		free(tmp);
 	}
 #endif
-- 
GitLab