About KArchive::data()

David Faure faure at kde.org
Mon Nov 5 23:07:50 GMT 2007


On Monday 05 November 2007, Szombathelyi Gy├Ârgy wrote:
> Hello,
> 
> I've got some problem about KArchive::data() method:
> If the file is rather large, this method tries to return the whole file in one 
> QByteArray. That could easily fill all the available memory, trash the disk 
> till the system runs out of swap space. 
Yes, it is documented to be so. The recommended way to read a file from an archive
is to use createDevice() and read from that device - no data copying, and no huge memory
allocation.

> I suggest changing it to "QByteArray  
> KArchive::data(qint64 size)", where size means the chunk size which should be 
> returned. The caller should call data(size) till the returned 
> QByteArray.isEmpty().
This is bad API since it's state-based IMHO. And after all the QIODevice API has all we
need for reading chunks already.

-- 
David Faure, faure at kde.org, sponsored by Trolltech to work on KDE,
Konqueror (http://www.konqueror.org), and KOffice (http://www.koffice.org).




More information about the kde-core-devel mailing list