Fixed missing f.Close() in writeConfig()

Defering can cause trouble because we're writing to the file outside the function
where the defering is registered, calling f.Sync() ensures that bytes are flushed
to disk even is Close() is called too soon.
This commit is contained in:
bpizzi 2018-07-27 10:10:14 +02:00 committed by Márk Sági-Kazár
parent e325492b82
commit e02bc9eca5

View file

@ -1378,7 +1378,13 @@ func (v *Viper) writeConfig(filename string, force bool) error {
if err != nil {
return err
}
return v.marshalWriter(f, configType)
defer f.Close()
if err := v.marshalWriter(f, configType); err != nil {
return err
}
return f.Sync()
}
// Unmarshal a Reader into a map.