mirror of
https://invent.kde.org/graphics/okular
synced 2024-10-05 23:49:20 +00:00
Don't leak temporary unpacked metadata files extracted from .okular files
This commit is contained in:
parent
6bf6b14f3c
commit
f7ec9df0af
|
@ -109,7 +109,7 @@ struct ArchiveData
|
||||||
}
|
}
|
||||||
|
|
||||||
KTemporaryFile document;
|
KTemporaryFile document;
|
||||||
QString metadataFileName;
|
KTemporaryFile metadataFile;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct RunningSearch
|
struct RunningSearch
|
||||||
|
@ -613,12 +613,12 @@ void DocumentPrivate::loadDocumentInfo()
|
||||||
if ( m_xmlFileName.isEmpty() )
|
if ( m_xmlFileName.isEmpty() )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
loadDocumentInfo( m_xmlFileName );
|
QFile infoFile( m_xmlFileName );
|
||||||
|
loadDocumentInfo( infoFile );
|
||||||
}
|
}
|
||||||
|
|
||||||
void DocumentPrivate::loadDocumentInfo( const QString &fileName )
|
void DocumentPrivate::loadDocumentInfo( QFile &infoFile )
|
||||||
{
|
{
|
||||||
QFile infoFile( fileName );
|
|
||||||
if ( !infoFile.exists() || !infoFile.open( QIODevice::ReadOnly ) )
|
if ( !infoFile.exists() || !infoFile.open( QIODevice::ReadOnly ) )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -2263,7 +2263,7 @@ bool Document::openDocument( const QString & docFile, const KUrl& url, const KMi
|
||||||
// 2. load Additional Data (bookmarks, local annotations and metadata) about the document
|
// 2. load Additional Data (bookmarks, local annotations and metadata) about the document
|
||||||
if ( d->m_archiveData )
|
if ( d->m_archiveData )
|
||||||
{
|
{
|
||||||
d->loadDocumentInfo( d->m_archiveData->metadataFileName );
|
d->loadDocumentInfo( d->m_archiveData->metadataFile );
|
||||||
d->m_annotationsNeedSaveAs = true;
|
d->m_annotationsNeedSaveAs = true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -4192,19 +4192,15 @@ bool Document::openDocumentArchive( const QString & docFile, const KUrl & url )
|
||||||
archiveData->document.close();
|
archiveData->document.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
std::auto_ptr< KTemporaryFile > tempMetadataFileName;
|
|
||||||
const KArchiveEntry * metadataEntry = mainDir->entry( metadataFileName );
|
const KArchiveEntry * metadataEntry = mainDir->entry( metadataFileName );
|
||||||
if ( metadataEntry && metadataEntry->isFile() )
|
if ( metadataEntry && metadataEntry->isFile() )
|
||||||
{
|
{
|
||||||
std::auto_ptr< QIODevice > metadataEntryDevice( static_cast< const KZipFileEntry * >( metadataEntry )->createDevice() );
|
std::auto_ptr< QIODevice > metadataEntryDevice( static_cast< const KZipFileEntry * >( metadataEntry )->createDevice() );
|
||||||
tempMetadataFileName.reset( new KTemporaryFile() );
|
archiveData->metadataFile.setSuffix( ".xml" );
|
||||||
tempMetadataFileName->setSuffix( ".xml" );
|
if ( archiveData->metadataFile.open() )
|
||||||
tempMetadataFileName->setAutoRemove( false );
|
|
||||||
if ( tempMetadataFileName->open() )
|
|
||||||
{
|
{
|
||||||
copyQIODevice( metadataEntryDevice.get(), tempMetadataFileName.get() );
|
copyQIODevice( metadataEntryDevice.get(), &archiveData->metadataFile );
|
||||||
archiveData->metadataFileName = tempMetadataFileName->fileName();
|
archiveData->metadataFile.close();
|
||||||
tempMetadataFileName->close();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -29,6 +29,7 @@
|
||||||
|
|
||||||
class QUndoStack;
|
class QUndoStack;
|
||||||
class QEventLoop;
|
class QEventLoop;
|
||||||
|
class QFile;
|
||||||
class QTimer;
|
class QTimer;
|
||||||
class KTemporaryFile;
|
class KTemporaryFile;
|
||||||
|
|
||||||
|
@ -121,7 +122,7 @@ class DocumentPrivate
|
||||||
qulonglong getTotalMemory();
|
qulonglong getTotalMemory();
|
||||||
qulonglong getFreeMemory( qulonglong *freeSwap = 0 );
|
qulonglong getFreeMemory( qulonglong *freeSwap = 0 );
|
||||||
void loadDocumentInfo();
|
void loadDocumentInfo();
|
||||||
void loadDocumentInfo( const QString &fileName );
|
void loadDocumentInfo( QFile &infoFile );
|
||||||
void loadViewsInfo( View *view, const QDomElement &e );
|
void loadViewsInfo( View *view, const QDomElement &e );
|
||||||
void saveViewsInfo( View *view, QDomElement &e ) const;
|
void saveViewsInfo( View *view, QDomElement &e ) const;
|
||||||
QString giveAbsolutePath( const QString & fileName ) const;
|
QString giveAbsolutePath( const QString & fileName ) const;
|
||||||
|
|
Loading…
Reference in a new issue