diff options
author | Eike Rathke <erack@redhat.com> | 2022-06-20 17:13:53 +0200 |
---|---|---|
committer | Xisco Fauli <xiscofauli@libreoffice.org> | 2022-06-21 13:48:40 +0200 |
commit | 3e24263d6174cd1e33c4216acbd0130b4ffa2dce (patch) | |
tree | 7854792e437349ebf966153200233a10320eaef3 /svl | |
parent | c0d9d30d8e2900c23b5d0ccac49064d2fb6650f3 (diff) |
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 <erack@redhat.com>
Tested-by: Jenkins
(cherry picked from commit 36cf12d449c892e6bbacb7da5f4b008f7762232b)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/136166
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Diffstat (limited to 'svl')
-rw-r--r-- | svl/source/numbers/zforlist.cxx | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/svl/source/numbers/zforlist.cxx b/svl/source/numbers/zforlist.cxx index fbd05a481df9..6a9934fdbed1 100644 --- a/svl/source/numbers/zforlist.cxx +++ b/svl/source/numbers/zforlist.cxx @@ -4285,12 +4285,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; } @@ -4319,9 +4323,7 @@ sal_uInt16 SvNumberFormatter::GetCurrencyFormatStrings( NfWSStringsDtor& rStrArr + ";" + aRed + aNegativeBank; - addToCurrencyFormatsList( rStrArr, format2); - - nDefault = rStrArr.size() - 1; + nDefault = addToCurrencyFormatsList( rStrArr, format2); } else { @@ -4374,8 +4376,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); |