[Libreoffice-commits] core.git: Branch 'libreoffice-5-3' - formula/source

Eike Rathke erack at redhat.com
Fri Jan 6 00:46:20 UTC 2017


 formula/source/core/api/FormulaCompiler.cxx |   21 ++++++++++++++++++++-
 1 file changed, 20 insertions(+), 1 deletion(-)

New commits:
commit 964cf72012b80ee4cab8923939182450bab28a4f
Author: Eike Rathke <erack at redhat.com>
Date:   Thu Jan 5 16:32:24 2017 +0100

    Resolves: tdf#105024 generate and parse detailed "#ERRxxx!" error constants
    
    Change-Id: I4e5d98cdbbc2f3e7746cd3892f70151376bc5808
    (cherry picked from commit 857be5b2db4b2726306199bc279942f621bf55d8)
    Reviewed-on: https://gerrit.libreoffice.org/32761
    Reviewed-by: Eike Rathke <erack at redhat.com>
    Tested-by: Jenkins <ci at libreoffice.org>

diff --git a/formula/source/core/api/FormulaCompiler.cxx b/formula/source/core/api/FormulaCompiler.cxx
index b0a2ada..9e23149 100644
--- a/formula/source/core/api/FormulaCompiler.cxx
+++ b/formula/source/core/api/FormulaCompiler.cxx
@@ -1185,6 +1185,17 @@ FormulaError FormulaCompiler::GetErrorConstant( const OUString& rName ) const
                 ;   // nothing
         }
     }
+    else
+    {
+        // Per convention recognize detailed "#ERRxxx!" constants, always
+        // untranslated.
+        if (rName.startsWithIgnoreAsciiCase("#ERR") && rName[rName.getLength()-1] == '!')
+        {
+            sal_uInt32 nErr = rName.copy( 4, rName.getLength() - 5).toUInt32();
+            if (0 < nErr && nErr <= SAL_MAX_UINT16)
+                nError = static_cast<FormulaError>(nErr);
+        }
+    }
     return nError;
 }
 
@@ -1203,7 +1214,6 @@ void FormulaCompiler::AppendErrorConstant( OUStringBuffer& rBuffer, FormulaError
     OpCode eOp;
     switch (nError)
     {
-        default:
         case FormulaError::NoCode:
             eOp = ocErrNull;
             break;
@@ -1225,6 +1235,15 @@ void FormulaCompiler::AppendErrorConstant( OUStringBuffer& rBuffer, FormulaError
         case FormulaError::NotAvailable:
             eOp = ocErrNA;
             break;
+        default:
+            {
+                // Per convention create detailed "#ERRxxx!" constants, always
+                // untranslated.
+                rBuffer.append("#ERR");
+                rBuffer.append(static_cast<sal_Int32>(nError));
+                rBuffer.append('!');
+                return;
+            }
     }
     rBuffer.append( mxSymbols->getSymbol( eOp));
 }


More information about the Libreoffice-commits mailing list