diff --git a/radiant/preferences.cpp b/radiant/preferences.cpp index 31bef256..8ec4126f 100644 --- a/radiant/preferences.cpp +++ b/radiant/preferences.cpp @@ -176,15 +176,10 @@ bool Preferences_Save( PreferenceDictionary& preferences, const char* filename ) } bool Preferences_Save_Safe( PreferenceDictionary& preferences, const char* filename ){ - Array tmpName( filename, filename + strlen( filename ) + 1 + 3 ); - *( tmpName.end() - 4 ) = 'T'; - *( tmpName.end() - 3 ) = 'M'; - *( tmpName.end() - 2 ) = 'P'; - *( tmpName.end() - 1 ) = '\0'; - - return Preferences_Save( preferences, tmpName.data() ) + const auto tmpName = StringOutputStream()( filename, "TMP" ); + return Preferences_Save( preferences, tmpName ) && ( !file_exists( filename ) || file_remove( filename ) ) - && file_move( tmpName.data(), filename ); + && file_move( tmpName, filename ); }