Fix overwriting pdf after signing

- make explicit we're using static QFile func here
- QFile::rename doesn't work across filesystems, so instead
  create it alongside. Might fail if dir is not writeable
- can't use QSaveFile, since poppler sign() func wants a filename
This commit is contained in:
Thorsten Behrens 2020-01-17 23:40:51 +01:00 committed by Albert Astals Cid
parent f7d6045b92
commit 981c597376

View file

@ -1883,7 +1883,7 @@ bool PDFGenerator::sign( const Okular::Annotation* pWhichAnnotation, const QStri
Poppler::Annotation *popplerAnn = qvariant_cast< Poppler::Annotation * >( pWhichAnnotation->nativeId() );
// save to tmp file - poppler doesn't like overwriting in-place
QTemporaryFile tf(QDir::tempPath() + QLatin1String("/okular_XXXXXX.pdf"));
QTemporaryFile tf(QFileInfo(rFilename).absolutePath() + QLatin1String("/okular_XXXXXX.pdf"));
tf.setAutoRemove(false);
if (!tf.open())
return false;
@ -1895,7 +1895,7 @@ bool PDFGenerator::sign( const Okular::Annotation* pWhichAnnotation, const QStri
return false;
// now copy over old file
tf.remove(rFilename);
QFile::remove(rFilename);
if (!tf.rename(rFilename))
return false;
#else