summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@collabora.co.uk>2015-04-09 14:20:44 +0200
committerCaolán McNamara <caolanm@redhat.com>2015-04-11 20:23:42 +0000
commit384880cb2e395e359b152c5afe7d8ba56c5249ff (patch)
tree849d79815ae9128bbe59067761618642a04ef6cb
parentf5b5f04068ff89ed3db9bf990120853b012558d9 (diff)
tdf#89214 SwDoc::GetUniqueNumRuleName: always return pChkStr if it's unused
Regression from commit bb00a0097900ae054401f7758a915047cfde4065 (do not bother with nice unique names during mailmerge, 2014-11-08), SwAttrSet::CopyToModify() expects that in case SwDoc::FindNumRulePtr() returns 0 for a name, then the call to SwDoc::MakeNumRule() will use the not found name (as SwDoc::GetUniqueNumRuleName() will return the just checked name). As a result, simply always returning a random unique name during mail merge is a problem. Only return a cheap random unique name if no hint is given. (cherry picked from commit ceafd0a76fb062237f627cd9d49d4aad78cf3066) Conflicts: sw/qa/extras/mailmerge/mailmerge.cxx Change-Id: I49d65009ced97d00aa2e8db35a529f2f30ac9ae5 Reviewed-on: https://gerrit.libreoffice.org/15229 Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
-rw-r--r--sw/qa/extras/mailmerge/data/tdf89214.odtbin0 -> 9832 bytes
-rw-r--r--sw/qa/extras/mailmerge/mailmerge.cxx12
-rw-r--r--sw/source/core/doc/docnum.cxx6
3 files changed, 15 insertions, 3 deletions
diff --git a/sw/qa/extras/mailmerge/data/tdf89214.odt b/sw/qa/extras/mailmerge/data/tdf89214.odt
new file mode 100644
index 000000000000..70def3730e26
--- /dev/null
+++ b/sw/qa/extras/mailmerge/data/tdf89214.odt
Binary files differ
diff --git a/sw/qa/extras/mailmerge/mailmerge.cxx b/sw/qa/extras/mailmerge/mailmerge.cxx
index d17c835dedf6..3ac972406c40 100644
--- a/sw/qa/extras/mailmerge/mailmerge.cxx
+++ b/sw/qa/extras/mailmerge/mailmerge.cxx
@@ -334,6 +334,18 @@ DECLARE_SHELL_MAILMERGE_TEST(testPageBoundaries2Pages, "simple-mail-merge-2pages
}
}
+DECLARE_SHELL_MAILMERGE_TEST(testTdf89214, "tdf89214.odt", "10-testing-addresses.ods", "testing-addresses")
+{
+ executeMailMerge();
+
+ uno::Reference<text::XTextDocument> xTextDocument(mxMMComponent, uno::UNO_QUERY);
+ uno::Reference<text::XTextRange> xParagraph(getParagraphOrTable(3, xTextDocument->getText()), uno::UNO_QUERY);
+ // Make sure that we assert the right paragraph.
+ CPPUNIT_ASSERT_EQUAL(OUString("a"), xParagraph->getString());
+ // This paragraph had a bullet numbering, make sure that the list id is not empty.
+ CPPUNIT_ASSERT(!getProperty<OUString>(xParagraph, "ListId").isEmpty());
+}
+
#endif
CPPUNIT_PLUGIN_IMPLEMENT();
diff --git a/sw/source/core/doc/docnum.cxx b/sw/source/core/doc/docnum.cxx
index 835b1e1cdcb9..f767f9a81634 100644
--- a/sw/source/core/doc/docnum.cxx
+++ b/sw/source/core/doc/docnum.cxx
@@ -2188,13 +2188,13 @@ sal_uInt16 SwDoc::MakeNumRule( const OUString &rName,
OUString SwDoc::GetUniqueNumRuleName( const OUString* pChkStr, bool bAutoNum ) const
{
- if( IsInMailMerge())
+ // If we got pChkStr, then the caller expects that in case it's not yet
+ // used, it'll be returned.
+ if( IsInMailMerge() && !pChkStr )
{
OUString newName = "MailMergeNumRule"
+ OStringToOUString( DateTimeToOString( DateTime( DateTime::SYSTEM )), RTL_TEXTENCODING_ASCII_US )
+ OUString::number( mpNumRuleTbl->size() + 1 );
- if( pChkStr )
- newName += *pChkStr;
return newName;
}