From 3ae87ba6139494b2428f84860dc90ffa81e6b1f5 Mon Sep 17 00:00:00 2001 From: Marek Roszko Date: Sat, 12 Dec 2020 10:44:31 -0500 Subject: [PATCH] Use wxFFileOutputStream in place of previous wxFFile switch wxFFile with fwrite still has a chance of partial writes. wxFFileOutputStream provides WriteAll which will iterate until all bytes written or error. --- common/settings/json_settings.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/common/settings/json_settings.cpp b/common/settings/json_settings.cpp index 1bc5aa533a..dcdaa04711 100644 --- a/common/settings/json_settings.cpp +++ b/common/settings/json_settings.cpp @@ -33,7 +33,7 @@ #include #include #include -#include +#include const wxChar* const traceSettings = wxT( "KICAD_SETTINGS" ); @@ -392,9 +392,10 @@ bool JSON_SETTINGS::SaveToFile( const wxString& aDirectory, bool aForce ) std::stringstream buffer; buffer << std::setw( 2 ) << *this << std::endl; - wxFFile file( path.GetFullPath(), "wb" ); + wxFFileOutputStream fileStream( path.GetFullPath(), "wb" ); - if( !file.IsOpened() || !file.Write( buffer.str().c_str(), buffer.str().size() ) ) + if( !fileStream.IsOk() + || !fileStream.WriteAll( buffer.str().c_str(), buffer.str().size() ) ) { wxLogTrace( traceSettings, "Warning: could not save %s", GetFullFilename() ); success = false;