Kaydet (Commit) ceafd0a7 authored tarafından Miklos Vajna's avatar Miklos Vajna

tdf#89214 SwDoc::GetUniqueNumRuleName: always return pChkStr if it's unused

Regression from commit bb00a009 (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.

Change-Id: I49d65009ced97d00aa2e8db35a529f2f30ac9ae5
üst 0cd2bf10
...@@ -394,5 +394,17 @@ DECLARE_SHELL_MAILMERGE_TEST(testPageBoundaries2Pages, "simple-mail-merge-2pages ...@@ -394,5 +394,17 @@ 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());
}
CPPUNIT_PLUGIN_IMPLEMENT(); CPPUNIT_PLUGIN_IMPLEMENT();
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
...@@ -2178,13 +2178,13 @@ sal_uInt16 SwDoc::MakeNumRule( const OUString &rName, ...@@ -2178,13 +2178,13 @@ sal_uInt16 SwDoc::MakeNumRule( const OUString &rName,
OUString SwDoc::GetUniqueNumRuleName( const OUString* pChkStr, bool bAutoNum ) const 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" OUString newName = "MailMergeNumRule"
+ OStringToOUString( DateTimeToOString( DateTime( DateTime::SYSTEM )), RTL_TEXTENCODING_ASCII_US ) + OStringToOUString( DateTimeToOString( DateTime( DateTime::SYSTEM )), RTL_TEXTENCODING_ASCII_US )
+ OUString::number( mpNumRuleTbl->size() + 1 ); + OUString::number( mpNumRuleTbl->size() + 1 );
if( pChkStr )
newName += *pChkStr;
return newName; return newName;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment