summaryrefslogtreecommitdiff
path: root/svl
diff options
context:
space:
mode:
authorEike Rathke <erack@redhat.com>2022-06-20 17:13:53 +0200
committerXisco Fauli <xiscofauli@libreoffice.org>2022-06-21 13:48:40 +0200
commit3e24263d6174cd1e33c4216acbd0130b4ffa2dce (patch)
tree7854792e437349ebf966153200233a10320eaef3 /svl
parentc0d9d30d8e2900c23b5d0ccac49064d2fb6650f3 (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.cxx17
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);