[Libreoffice-commits] core.git: Branch 'libreoffice-6-2' - svl/source

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Thu Jan 17 18:10:23 UTC 2019


 svl/source/numbers/zforlist.cxx |    9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

New commits:
commit aee0babb24f18c6f47f315ffce504e0b49363a68
Author:     Eike Rathke <erack at redhat.com>
AuthorDate: Wed Jan 16 18:19:54 2019 +0100
Commit:     Eike Rathke <erack at redhat.com>
CommitDate: Thu Jan 17 19:09:57 2019 +0100

    Related: tdf#122509 prevent access of not existing base format
    
    Call to pFormat->HasPositiveBracketPlaceholder() with nullptr as
    obtained for the not existing nIndex was the immediate cause of
    the crash.
    
    Also obtain the type from the format if found instead of the
    separate GetType() call that again would need to find the format
    first. This clarifies that the other places accessing pFormat
    don't need additional checks because eType isn't UNDEFINED there.
    
    Reviewed-on: https://gerrit.libreoffice.org/66476
    Reviewed-by: Eike Rathke <erack at redhat.com>
    Tested-by: Jenkins
    
    According to
    https://crashreport.libreoffice.org/stats/signature/SvNumberformat::HasPositiveBracketPlaceholder()
    this occasionally happened in ~all releases, independent of the
    circumstances in tdf#122509, so let's backport to available release.
    
    Change-Id: I5d78ad73eeb4c3820c45d6a91b0e729ed22951a4
    Reviewed-on: https://gerrit.libreoffice.org/66520
    Tested-by: Jenkins
    Reviewed-by: Eike Rathke <erack at redhat.com>

diff --git a/svl/source/numbers/zforlist.cxx b/svl/source/numbers/zforlist.cxx
index aab66e24013f..82727ddd3b1a 100644
--- a/svl/source/numbers/zforlist.cxx
+++ b/svl/source/numbers/zforlist.cxx
@@ -2868,7 +2868,10 @@ OUString SvNumberFormatter::GenerateFormat(sal_uInt32 nIndex,
     {
         eLnge = IniLnge;
     }
-    SvNumFormatType eType = GetType(nIndex);
+
+    const SvNumberformat* pFormat = GetFormatEntry( nIndex );
+    const SvNumFormatType eType = (pFormat ? pFormat->GetMaskedType() : SvNumFormatType::UNDEFINED);
+
     ImpGenerateCL(eLnge);           // create new standard formats if necessary
 
     utl::DigitGroupingIterator aGrouping( xLocaleData->getDigitGrouping());
@@ -2876,8 +2879,6 @@ OUString SvNumberFormatter::GenerateFormat(sal_uInt32 nIndex,
     const sal_Int32 nDigitsInFirstGroup = ( bThousand && (eType == SvNumFormatType::SCIENTIFIC) ) ? 3 : aGrouping.get();
     const OUString& rThSep = GetNumThousandSep();
 
-    SvNumberformat* pFormat = GetFormatEntry( nIndex );
-
     OUStringBuffer sString;
     using comphelper::string::padToLength;
 
@@ -3025,7 +3026,7 @@ OUString SvNumberFormatter::GenerateFormat(sal_uInt32 nIndex,
         {
             OUStringBuffer sTmpStr(sString);
 
-            if ( pFormat->HasPositiveBracketPlaceholder() )
+            if (pFormat && pFormat->HasPositiveBracketPlaceholder())
             {
                  sTmpStr.append('_');
                  sTmpStr.append(')');


More information about the Libreoffice-commits mailing list