File corruption with KSaveFile on full disk

Thiago Macieira thiago at kde.org
Tue Jan 20 10:40:57 GMT 2009


Em Terça-feira 20 Janeiro 2009, às 00:40:43, David Faure escreveu:
> On Sunday 18 January 2009, Thiago Macieira wrote:
> > Michael Leupold wrote:
> > >I seem to have to check the return value and use waitForBytesWritten()
> > > unless I'm using unbuffered output as QIODevice::write() might (will?)
> > > return the number of bytes I tried to write even if the disk is full.
> > > That's at least what a simple test suggests.
> >
> > Use an unbuffered QFile and check the return value of write().
>
> Wow, we do the latter already in saving-code (KZip, KOffice, ...),
> but we don't use Unbuffered mode... It worked in qt3/kde3 without
> unbuffered, I'm sure.

The problem with buffered mode is that write() will report that it wrote all 
bytes, but the saving of them to disk might fail. In that case, the write 
happens inside flush() (not in waitForBytesWritten, which is a No-Op in QFile).

-- 
Thiago Macieira - thiago (AT) macieira.info - thiago (AT) kde.org
  Senior Software Engineer - Nokia, Qt Software
  Qt Software is hiring - ask me
      PGP/GPG: 0x6EF45358; fingerprint:
      E067 918B B660 DBD1 105C  966C 33F5 F005 6EF4 5358
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part.
URL: <http://mail.kde.org/pipermail/kde-core-devel/attachments/20090120/e0f92f7b/attachment.sig>


More information about the kde-core-devel mailing list