OSDN Git Service

Merge branch 'develop' into macos-develop
[hengbandforosx/hengbandosx.git] / src / floor / floor-save.cpp
index a6bd7ac..dd3afca 100644 (file)
@@ -29,7 +29,7 @@ static std::string get_saved_floor_name(int level)
 {
     char ext[32];
     strnfmt(ext, sizeof(ext), ".F%02d", level);
-    return std::string(savefile).append(ext);
+    return savefile.string().append(ext);
 }
 
 static void check_saved_tmp_files(const int fd, bool *force)
@@ -63,17 +63,19 @@ static void check_saved_tmp_files(const int fd, bool *force)
 void init_saved_floors(PlayerType *player_ptr, bool force)
 {
     auto fd = -1;
-    for (int i = 0; i < MAX_SAVED_FLOORS; i++) {
-        saved_floor_type *sf_ptr = &saved_floors[i];
-        std::string floor_savefile = get_saved_floor_name(i);
-        safe_setuid_grab(player_ptr);
-        fd = fd_make(floor_savefile.data());
-        safe_setuid_drop();
-        check_saved_tmp_files(fd, &force);
-        safe_setuid_grab(player_ptr);
-        (void)fd_kill(floor_savefile.data());
-        safe_setuid_drop();
-        sf_ptr->floor_id = 0;
+    if (!savefile.empty()) {
+        for (int i = 0; i < MAX_SAVED_FLOORS; i++) {
+            saved_floor_type *sf_ptr = &saved_floors[i];
+            auto floor_savefile = get_saved_floor_name(i);
+            safe_setuid_grab();
+            fd = fd_make(floor_savefile);
+            safe_setuid_drop();
+            check_saved_tmp_files(fd, &force);
+            safe_setuid_grab();
+            (void)fd_kill(floor_savefile);
+            safe_setuid_drop();
+            sf_ptr->floor_id = 0;
+        }
     }
 
     max_floor_id = 1;
@@ -96,8 +98,8 @@ void clear_saved_floor_files(PlayerType *player_ptr)
             continue;
         }
 
-        safe_setuid_grab(player_ptr);
-        (void)fd_kill(get_saved_floor_name(i).data());
+        safe_setuid_grab();
+        (void)fd_kill(get_saved_floor_name(i));
         safe_setuid_drop();
     }
 }
@@ -140,8 +142,8 @@ void kill_saved_floor(PlayerType *player_ptr, saved_floor_type *sf_ptr)
         return;
     }
 
-    safe_setuid_grab(player_ptr);
-    (void)fd_kill(get_saved_floor_name((int)sf_ptr->savefile_id).data());
+    safe_setuid_grab();
+    (void)fd_kill(get_saved_floor_name((int)sf_ptr->savefile_id));
     safe_setuid_drop();
     sf_ptr->floor_id = 0;
 }