[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-core-devel
Subject:    Re: File corruption with KSaveFile on full disk
From:       Thiago Macieira <thiago () kde ! org>
Date:       2009-01-20 10:40:57
Message-ID: 200901201140.57917.thiago () kde ! org
[Download RAW message or body]


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

["signature.asc" (application/pgp-signature)]

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic