fixed potentially disastrous bug with destroying level template when saving template...
authorHolger Schemel <info@artsoft.org>
Fri, 27 Jan 2017 21:18:28 +0000 (22:18 +0100)
committerHolger Schemel <info@artsoft.org>
Fri, 27 Jan 2017 21:18:28 +0000 (22:18 +0100)
src/files.c

index d7f59a722369cc7e0e82bfa2d46ed293fe8527b8..b55395f409dd85d0b97a5e468d7157d69aaf7d24 100644 (file)
@@ -7062,7 +7062,8 @@ static int SaveLevel_GRPX(FILE *file, struct LevelInfo *level, int element)
   return chunk_size;
 }
 
-static void SaveLevelFromFilename(struct LevelInfo *level, char *filename)
+static void SaveLevelFromFilename(struct LevelInfo *level, char *filename,
+                                 boolean save_as_template)
 {
   int chunk_size;
   int i;
@@ -7126,7 +7127,7 @@ static void SaveLevelFromFilename(struct LevelInfo *level, char *filename)
   }
 
   /* if not using template level, check for non-default custom/group elements */
-  if (!level->use_custom_template)
+  if (!level->use_custom_template || save_as_template)
   {
     for (i = 0; i < NUM_CUSTOM_ELEMENTS; i++)
     {
@@ -7162,14 +7163,14 @@ void SaveLevel(int nr)
 {
   char *filename = getDefaultLevelFilename(nr);
 
-  SaveLevelFromFilename(&level, filename);
+  SaveLevelFromFilename(&level, filename, FALSE);
 }
 
 void SaveLevelTemplate()
 {
   char *filename = getLocalLevelTemplateFilename();
 
-  SaveLevelFromFilename(&level, filename);
+  SaveLevelFromFilename(&level, filename, TRUE);
 }
 
 boolean SaveLevelChecked(int nr)