svl/source/numbers/zforlist.cxx | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-)
New commits: commit 37b30be41d24c3659dbf64b46c490e94869fca7f Author: Eike Rathke <er...@redhat.com> AuthorDate: Mon Jun 20 17:13:53 2022 +0200 Commit: Eike Rathke <er...@redhat.com> CommitDate: Mon Jun 20 22:45:27 2022 +0200 Resolves: tdf#147265 Return correct default if currency format is duplicate For the default currency format SvNumberFormatter::GetCurrencyFormatStrings() returned always the last added position, regardless whether that format was added or not, which it isn't if the format code is a duplicate. Let addToCurrencyFormatsList() return the position of the existing format if the duplicate was rejected and use that for default. Change-Id: I148d7379de75cae402b063f7b2f92947e345176f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/136187 Reviewed-by: Eike Rathke <er...@redhat.com> Tested-by: Jenkins (cherry picked from commit cbcdea550e08ffa2fd01215f0a14790225608076) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/136165 diff --git a/svl/source/numbers/zforlist.cxx b/svl/source/numbers/zforlist.cxx index c1d45cc9bd60..0c1e28661fb8 100644 --- a/svl/source/numbers/zforlist.cxx +++ b/svl/source/numbers/zforlist.cxx @@ -4290,12 +4290,16 @@ void SvNumberFormatter::ImpInitCurrencyTable() } -static void addToCurrencyFormatsList( NfWSStringsDtor& rStrArr, const OUString& rFormat ) +static std::ptrdiff_t addToCurrencyFormatsList( NfWSStringsDtor& rStrArr, const OUString& rFormat ) { // Prevent duplicates even over subsequent calls of // GetCurrencyFormatStrings() with the same vector. - if (std::find( rStrArr.begin(), rStrArr.end(), rFormat) == rStrArr.end()) - rStrArr.push_back( rFormat); + NfWSStringsDtor::const_iterator it( std::find( rStrArr.begin(), rStrArr.end(), rFormat)); + if (it != rStrArr.end()) + return it - rStrArr.begin(); + + rStrArr.push_back( rFormat); + return rStrArr.size() - 1; } @@ -4324,9 +4328,7 @@ sal_uInt16 SvNumberFormatter::GetCurrencyFormatStrings( NfWSStringsDtor& rStrArr + ";" + aRed + aNegativeBank; - addToCurrencyFormatsList( rStrArr, format2); - - nDefault = rStrArr.size() - 1; + nDefault = addToCurrencyFormatsList( rStrArr, format2); } else { @@ -4379,8 +4381,7 @@ sal_uInt16 SvNumberFormatter::GetCurrencyFormatStrings( NfWSStringsDtor& rStrArr { addToCurrencyFormatsList( rStrArr, format3); } - addToCurrencyFormatsList( rStrArr, format4); - nDefault = rStrArr.size() - 1; + nDefault = addToCurrencyFormatsList( rStrArr, format4); if (rCurr.GetDigits()) { addToCurrencyFormatsList( rStrArr, format5);