diff options
author | Mike Kaganski <mike.kaganski@collabora.com> | 2018-07-03 21:38:48 +1000 |
---|---|---|
committer | Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de> | 2019-10-11 09:42:07 +0200 |
commit | 68fde939500888a4feb094b9f31c3917e93f4d26 (patch) | |
tree | b0b88cb58b66b140048ba4020a4f60a383dfb670 | |
parent | Bump version to 6.1.7.6 (diff) | |
download | core-68fde939500888a4feb094b9f31c3917e93f4d26.tar.gz core-68fde939500888a4feb094b9f31c3917e93f4d26.zip |
Avoid failing assert in SwDBManager::MergeMailFiles
The failing assert reproducing scenario is the steps in
https://bugs.documentfoundation.org/show_bug.cgi?id=116543#c0
rMergeDescriptor.nMergeType == DBMGR_MERGE_PRINTER;
rMergeDescriptor.bPrefixIsFilename is true;
rMergeDescriptor.sPrefix is empty.
The failing assert is unrelated to the crash in tdf#116543.
It looks like the assertion was incorrect; assert on empty
prefix instead.
Change-Id: Ibeedb90a9fac810124283fc06aa756777fa04720
Reviewed-on: https://gerrit.libreoffice.org/56863
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Reviewed-on: https://gerrit.libreoffice.org/80552
Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>
Tested-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>
-rw-r--r-- | sw/source/uibase/dbui/dbmgr.cxx | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/sw/source/uibase/dbui/dbmgr.cxx b/sw/source/uibase/dbui/dbmgr.cxx index bb3c5c97b7bb..de0a9ad8869d 100644 --- a/sw/source/uibase/dbui/dbmgr.cxx +++ b/sw/source/uibase/dbui/dbmgr.cxx @@ -1200,19 +1200,22 @@ bool SwDBManager::MergeMailFiles(SwWrtShell* pSourceShell, const bool bIsMergeSilent = IsMergeSilent(); bool bCheckSingleFile_ = rMergeDescriptor.bCreateSingleFile; + OUString sPrefix_ = rMergeDescriptor.sPrefix; if( bMT_EMAIL ) { assert( !rMergeDescriptor.bPrefixIsFilename ); - assert( bMT_EMAIL && !bCheckSingleFile_ ); + assert(!bCheckSingleFile_); bCheckSingleFile_ = false; } else if( bMT_SHELL || bMT_PRINTER ) { - assert( !rMergeDescriptor.bPrefixIsFilename ); - assert( (bMT_SHELL || bMT_PRINTER) && bCheckSingleFile_ ); + assert(bCheckSingleFile_); bCheckSingleFile_ = true; + assert(sPrefix_.isEmpty()); + sPrefix_.clear(); } const bool bCreateSingleFile = bCheckSingleFile_; + const OUString sDescriptorPrefix = sPrefix_; // Setup for dumping debugging documents static const char *sMaxDumpDocs = nullptr; @@ -1435,7 +1438,7 @@ bool SwDBManager::MergeMailFiles(SwWrtShell* pSourceShell, // create a new temporary file name - only done once in case of bCreateSingleFile if( bNeedsTempFiles && ( !bWorkDocInitialized || !bCreateSingleFile )) { - OUString sPrefix = rMergeDescriptor.sPrefix; + OUString sPrefix = sDescriptorPrefix; OUString sLeading; //#i97667# if the name is from a database field then it will be used _as is_ @@ -1690,11 +1693,11 @@ bool SwDBManager::MergeMailFiles(SwWrtShell* pSourceShell, // save merged document assert( aTempFile.get() ); INetURLObject aTempFileURL; - if( rMergeDescriptor.sPrefix.isEmpty() || !rMergeDescriptor.bPrefixIsFilename ) + if (sDescriptorPrefix.isEmpty() || !rMergeDescriptor.bPrefixIsFilename) aTempFileURL.SetURL( aTempFile->GetURL() ); else { - aTempFileURL.SetURL( rMergeDescriptor.sPrefix ); + aTempFileURL.SetURL(sDescriptorPrefix); // remove the unneeded temporary file aTempFile->EnableKillingFile(); } |