ooo-build r14592 - in trunk: . patches/dev300



Author: kyoshida
Date: Tue Nov 25 01:51:58 2008
New Revision: 14592
URL: http://svn.gnome.org/viewvc/ooo-build?rev=14592&view=rev

Log:
2008-11-24  Kohei Yoshida  <kyoshida novell com>

	* patches/dev300/sc-string-arg.diff: display #VALUE! error instead of 
	Err:529 (n#440808).


Modified:
   trunk/ChangeLog
   trunk/patches/dev300/sc-string-arg.diff

Modified: trunk/patches/dev300/sc-string-arg.diff
==============================================================================
--- trunk/patches/dev300/sc-string-arg.diff	(original)
+++ trunk/patches/dev300/sc-string-arg.diff	Tue Nov 25 01:51:58 2008
@@ -1,18 +1,29 @@
-diff -urp --exclude=CVS --exclude=unxlngi6.pro --exclude=sc.vpj sc.clean/source/core/inc/interpre.hxx sc/source/core/inc/interpre.hxx
---- sc.clean/source/core/inc/interpre.hxx	2008-04-01 12:26:35.000000000 -0400
-+++ sc/source/core/inc/interpre.hxx	2008-04-21 11:10:56.000000000 -0400
-@@ -192,8 +192,8 @@ void ReplaceCell( ScAddress& );     // f
+diff --git sc/source/core/inc/interpre.hxx sc/source/core/inc/interpre.hxx
+index 474d2aa..2dc537f 100644
+--- sc/source/core/inc/interpre.hxx
++++ sc/source/core/inc/interpre.hxx
+@@ -174,8 +174,18 @@ void ReplaceCell( ScAddress& );     // for TableOp
  void ReplaceCell( SCCOL& rCol, SCROW& rRow, SCTAB& rTab );  // for TableOp
  BOOL IsTableOpInRange( const ScRange& );
  ULONG GetCellNumberFormat( const ScAddress&, const ScBaseCell* );
 -double GetCellValue( const ScAddress&, const ScBaseCell* );
 -double GetCellValueOrZero( const ScAddress&, const ScBaseCell* );
++
++/** 
++ * @param bNoValueAsError when true, cell having no numerical value 
++ *                        (errCellNoValue) is interpreted as a legitimate
++ *                        no-value (errNoValue) error.
++ * @param bBlankAsZero when true, a cell having a blank text value is 
++ *                     interpreted as a no-value error.
++ * 
++ * @return double cell value.
++ */
 +double GetCellValue( const ScAddress&, const ScBaseCell*, bool bNoValueAsError = false, bool bBlankAsZero = false );
 +double GetCellValueOrZero( const ScAddress&, const ScBaseCell*, bool bBlankAsZero );
  double GetValueCellValue( const ScAddress&, const ScValueCell* );
  ScBaseCell* GetCell( const ScAddress& rPos )
      { return pDok->GetCell( rPos ); }
-@@ -332,7 +332,7 @@ StackVar GetStackType( BYTE nParam );
+@@ -314,7 +324,7 @@ StackVar GetStackType( BYTE nParam );
  BYTE GetByte() { return cPar; }
  // generiert aus DoubleRef positionsabhaengige SingleRef
  BOOL DoubleRefToPosSingleRef( const ScRange& rRange, ScAddress& rAdr );
@@ -21,11 +32,12 @@
  double GetDoubleWithDefault(double nDefault);
  BOOL IsMissing();
  BOOL GetBool() { return GetDouble() != 0.0; }
-diff -urp --exclude=CVS --exclude=unxlngi6.pro --exclude=sc.vpj sc.clean/source/core/tool/interpr1.cxx sc/source/core/tool/interpr1.cxx
---- sc.clean/source/core/tool/interpr1.cxx	2008-04-01 12:26:37.000000000 -0400
-+++ sc/source/core/tool/interpr1.cxx	2008-04-21 11:21:35.000000000 -0400
-@@ -3059,12 +3059,13 @@ double ScInterpreter::IterateParameters(
-     size_t nRefInList = 0;
+diff --git sc/source/core/tool/interpr1.cxx sc/source/core/tool/interpr1.cxx
+index 722ca4b..a91fc44 100644
+--- sc/source/core/tool/interpr1.cxx
++++ sc/source/core/tool/interpr1.cxx
+@@ -3064,12 +3064,13 @@ double ScInterpreter::IterateParameters( ScIterFunc eFunc, BOOL bTextAsZero )
+         nGlobalError = 0;
      while (nParamCount-- > 0)
      {
 -        switch (GetStackType())
@@ -41,7 +53,7 @@
                  {
                      String aStr( PopString() );
                      sal_uInt32 nFIndex = 0;                 // damit default Land/Spr.
-@@ -3073,42 +3074,23 @@ double ScInterpreter::IterateParameters(
+@@ -3078,42 +3079,23 @@ double ScInterpreter::IterateParameters( ScIterFunc eFunc, BOOL bTextAsZero )
                  }
                  else
                  {
@@ -97,7 +109,7 @@
                          if ( bNull && fVal != 0.0 )
                          {
                              bNull = FALSE;
-@@ -3117,12 +3099,15 @@ double ScInterpreter::IterateParameters(
+@@ -3122,12 +3104,15 @@ double ScInterpreter::IterateParameters( ScIterFunc eFunc, BOOL bTextAsZero )
                          else
                              fRes += fVal;
                          break;
@@ -117,10 +129,11 @@
              case svSingleRef :
              {
                  PopSingleRef( aAdr );
-diff -urp --exclude=CVS --exclude=unxlngi6.pro --exclude=sc.vpj sc.clean/source/core/tool/interpr4.cxx sc/source/core/tool/interpr4.cxx
---- sc.clean/source/core/tool/interpr4.cxx	2008-04-01 12:26:37.000000000 -0400
-+++ sc/source/core/tool/interpr4.cxx	2008-04-21 11:26:59.000000000 -0400
-@@ -203,18 +203,19 @@ double ScInterpreter::GetValueCellValue(
+diff --git sc/source/core/tool/interpr4.cxx sc/source/core/tool/interpr4.cxx
+index fdd78da..e997cc3 100644
+--- sc/source/core/tool/interpr4.cxx
++++ sc/source/core/tool/interpr4.cxx
+@@ -199,18 +199,26 @@ double ScInterpreter::GetValueCellValue( const ScAddress& rPos, const ScValueCel
  }
  
  
@@ -133,8 +146,15 @@
 -    double nVal = GetCellValueOrZero( rPos, pCell );
 -    if ( !nGlobalError || nGlobalError == errCellNoValue )
 +    double nVal = GetCellValueOrZero( rPos, pCell, bBlankAsZero );
-+    if ( !nGlobalError || (!bNoValueAsError && nGlobalError == errCellNoValue) )
++    if (!nGlobalError)
++        // no global error.  good.
          nGlobalError = nErr;
++    else if (nGlobalError == errCellNoValue)
++        // Internal cell-no-value error.  If the caller wants to treat no
++        // value as error, then we need to translate this to a legitimate
++        // error number (#VALUE!). If not, we should re-assign the prior error
++        // number.
++        nGlobalError = bNoValueAsError ? errNoValue : nErr;
      return nVal;
  }
  
@@ -144,7 +164,7 @@
  {
      double fValue;
      if (pCell)
-@@ -258,7 +259,7 @@ double ScInterpreter::GetCellValueOrZero
+@@ -254,7 +262,7 @@ double ScInterpreter::GetCellValueOrZero( const ScAddress& rPos, const ScBaseCel
              break;
              case  CELLTYPE_STRING:
              case  CELLTYPE_EDIT:
@@ -153,7 +173,7 @@
  // Xcl does it, but SUM(A1:A2) differs from A1+A2. No good.
              {
                  String aStr;
-@@ -269,14 +270,15 @@ double ScInterpreter::GetCellValueOrZero
+@@ -265,14 +273,15 @@ double ScInterpreter::GetCellValueOrZero( const ScAddress& rPos, const ScBaseCel
                  sal_uInt32 nFIndex = 0;                 // damit default Land/Spr.
                  if ( !pFormatter->IsNumberFormat( aStr, nFIndex, fValue ) )
                  {
@@ -171,7 +191,7 @@
                  fValue = 0.0;
          }
      }
-@@ -1565,7 +1567,7 @@ BOOL ScInterpreter::DoubleRefToPosSingle
+@@ -1561,7 +1570,7 @@ BOOL ScInterpreter::DoubleRefToPosSingleRef( const ScRange& rRange, ScAddress& r
  }
  
  
@@ -180,7 +200,7 @@
  {
      double nVal;
      switch( GetRawStackType() )
-@@ -1589,7 +1591,7 @@ double ScInterpreter::GetDouble()
+@@ -1585,7 +1594,7 @@ double ScInterpreter::GetDouble()
              ScAddress aAdr;
              PopSingleRef( aAdr );
              ScBaseCell* pCell = GetCell( aAdr );
@@ -189,10 +209,11 @@
          }
          break;
          case svDoubleRef:
-diff -urp --exclude=CVS --exclude=unxlngi6.pro --exclude=sc.vpj sc.clean/source/core/tool/interpr5.cxx sc/source/core/tool/interpr5.cxx
---- sc.clean/source/core/tool/interpr5.cxx	2008-04-01 12:26:37.000000000 -0400
-+++ sc/source/core/tool/interpr5.cxx	2008-04-21 11:34:12.000000000 -0400
-@@ -1291,7 +1291,12 @@ void ScInterpreter::ScAdd()
+diff --git sc/source/core/tool/interpr5.cxx sc/source/core/tool/interpr5.cxx
+index 8b4eeac..bc91cca 100644
+--- sc/source/core/tool/interpr5.cxx
++++ sc/source/core/tool/interpr5.cxx
+@@ -1297,7 +1297,12 @@ void ScInterpreter::ScAdd()
          pMat2 = GetMatrix();
      else
      {
@@ -206,7 +227,7 @@
          switch ( nCurFmtType )
          {
              case NUMBERFORMAT_DATE :
-@@ -1312,7 +1317,12 @@ void ScInterpreter::ScAdd()
+@@ -1318,7 +1323,12 @@ void ScInterpreter::ScAdd()
          pMat1 = GetMatrix();
      else
      {
@@ -220,7 +241,7 @@
          switch ( nCurFmtType )
          {
              case NUMBERFORMAT_DATE :
-@@ -1486,7 +1496,12 @@ void ScInterpreter::ScSub()
+@@ -1492,7 +1502,12 @@ void ScInterpreter::ScSub()
          pMat2 = GetMatrix();
      else
      {
@@ -234,7 +255,7 @@
          switch ( nCurFmtType )
          {
              case NUMBERFORMAT_DATE :
-@@ -1507,7 +1521,12 @@ void ScInterpreter::ScSub()
+@@ -1513,7 +1528,12 @@ void ScInterpreter::ScSub()
          pMat1 = GetMatrix();
      else
      {
@@ -248,7 +269,7 @@
          switch ( nCurFmtType )
          {
              case NUMBERFORMAT_DATE :
-@@ -1601,7 +1620,12 @@ void ScInterpreter::ScMul()
+@@ -1607,7 +1627,12 @@ void ScInterpreter::ScMul()
          pMat2 = GetMatrix();
      else
      {
@@ -262,7 +283,7 @@
          switch ( nCurFmtType )
          {
              case NUMBERFORMAT_CURRENCY :
-@@ -1614,7 +1638,12 @@ void ScInterpreter::ScMul()
+@@ -1620,7 +1645,12 @@ void ScInterpreter::ScMul()
          pMat1 = GetMatrix();
      else
      {
@@ -276,7 +297,7 @@
          switch ( nCurFmtType )
          {
              case NUMBERFORMAT_CURRENCY :
-@@ -1679,7 +1708,12 @@ void ScInterpreter::ScDiv()
+@@ -1685,7 +1715,12 @@ void ScInterpreter::ScDiv()
          pMat2 = GetMatrix();
      else
      {
@@ -290,7 +311,7 @@
          // hier kein Currency uebernehmen, 123kg/456DM sind nicht DM
          nFmtCurrencyType2 = nCurFmtType;
      }
-@@ -1687,7 +1721,12 @@ void ScInterpreter::ScDiv()
+@@ -1693,7 +1728,12 @@ void ScInterpreter::ScDiv()
          pMat1 = GetMatrix();
      else
      {



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]