From 8f5cf14b3095477e578c61e6caf96755bdb3a8ae Mon Sep 17 00:00:00 2001 From: sniperbeamer Date: Wed, 26 Aug 2009 07:33:10 +0000 Subject: [PATCH] Provide fallback if resize fails (hopefully fixes gvfs errors) git-svn-id: https://svn.code.sf.net/p/keepassx/code/trunk@330 b624d157-de02-0410-bad0-e51aec6abb33 --- src/Kdb3Database.cpp | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/Kdb3Database.cpp b/src/Kdb3Database.cpp index f7f8fc1..d751085 100644 --- a/src/Kdb3Database.cpp +++ b/src/Kdb3Database.cpp @@ -1455,13 +1455,17 @@ bool Kdb3Database::save(){ int size = EncryptedPartSize+DB_HEADER_SIZE; - if(!File->resize(size)){ - delete [] buffer; - error=decodeFileError(File->error()); - return false; + if (!File->resize(size)){ + if (File->size() > size) { + if (!File->remove() || !File->open(QIODevice::ReadWrite)) { + delete [] buffer; + error=decodeFileError(File->error()); + return false; + } + } } File->seek(0); - if(File->write(buffer,size)!=size){ + if (File->write(buffer,size)!=size){ delete [] buffer; error=decodeFileError(File->error()); return false;