mirror of
https://github.com/xiaoyifang/goldendict-ng.git
synced 2024-11-27 15:24:05 +00:00
fix: avoid QFile::readall when loading resources
This commit is contained in:
parent
d7953873b0
commit
2bd148dcba
|
@ -36,9 +36,9 @@ bool tryPossibleZipName( std::string const & name, std::string & copyTo )
|
|||
void loadFromFile( std::string const & filename, std::vector< char > & data )
|
||||
{
|
||||
File::Class f( filename, "rb" );
|
||||
QByteArray byteArray{ f.readall() };
|
||||
data.reserve( byteArray.size() );
|
||||
data = std::vector< char >( byteArray.cbegin(), byteArray.cend() );
|
||||
auto size = f.file().size(); // QFile::size() obtains size via statx on Linux
|
||||
data.resize( size );
|
||||
f.read( data.data(), size );
|
||||
}
|
||||
|
||||
void Class::open( char const * mode )
|
||||
|
@ -82,10 +82,9 @@ Class::Class( std::string_view filename, char const * mode )
|
|||
|
||||
void Class::read( void * buf, qint64 size )
|
||||
{
|
||||
qint64 result = f.read( static_cast< char * >( buf ), size );
|
||||
|
||||
if ( result != size )
|
||||
if ( f.read( static_cast< char * >( buf ), size ) != size ) {
|
||||
throw exReadError();
|
||||
}
|
||||
}
|
||||
|
||||
size_t Class::readRecords( void * buf, qint64 size, qint64 count )
|
||||
|
|
|
@ -13,7 +13,8 @@
|
|||
#include <vector>
|
||||
#include <QMutex>
|
||||
|
||||
/// A simple wrapper over QFile with some convenient GD specific functions
|
||||
/// A wrapper over QFile with some GD specific functions
|
||||
/// and exception throwing which are required for older coded to work correctly
|
||||
/// Consider the wrapped QFile as private implementation in the `Pimpl Idiom`
|
||||
///
|
||||
/// Note: this is used *only* in code related to `Dictionary::CLass` to manage dict files.
|
||||
|
|
Loading…
Reference in a new issue