fixed returning from function with incomplete list pointers
authorHolger Schemel <info@artsoft.org>
Mon, 6 Mar 2023 23:04:23 +0000 (00:04 +0100)
committerHolger Schemel <info@artsoft.org>
Mon, 6 Mar 2023 23:04:23 +0000 (00:04 +0100)
src/files.c

index 834154c8708c7c85e331984851c602dabaa70f4c..676ebf8aa3d9db839d3921b76032c6fadd76e2f5 100644 (file)
@@ -12944,6 +12944,7 @@ void LoadMusicInfo(void)
   DirectoryEntry *dir_entry;
   struct FileInfo *music, *sound;
   struct MusicFileInfo *next, **new;
+  boolean read_music_from_directory = TRUE;
   int i;
 
   while (music_file_info != NULL)
@@ -12996,10 +12997,11 @@ void LoadMusicInfo(void)
   {
     Warn("cannot read music directory '%s'", music_directory);
 
-    return;
+    read_music_from_directory = FALSE;
   }
 
-  while ((dir_entry = readDirectory(dir)) != NULL)     // loop all entries
+  while (read_music_from_directory &&
+        (dir_entry = readDirectory(dir)) != NULL)      // loop all entries
   {
     char *basename = dir_entry->basename;
     boolean music_already_used = FALSE;
@@ -13037,7 +13039,8 @@ void LoadMusicInfo(void)
     num_music_noconf++;
   }
 
-  closeDirectory(dir);
+  if (dir != NULL)
+    closeDirectory(dir);
 
   for (i = 0; i < num_sounds; i++)
   {