gnumeric r17114 - in trunk: . src



Author: mortenw
Date: Thu Jan 29 21:36:21 2009
New Revision: 17114
URL: http://svn.gnome.org/viewvc/gnumeric?rev=17114&view=rev

Log:
2009-01-29  Morten Welinder  <terra gnome org>

	* src/parse-util.c (rangeref_parse): Fix parsing problem for
	"a12:indirect(...)".  Fixes #569730.



Modified:
   trunk/ChangeLog
   trunk/NEWS
   trunk/src/parse-util.c

Modified: trunk/NEWS
==============================================================================
--- trunk/NEWS	(original)
+++ trunk/NEWS	Thu Jan 29 21:36:21 2009
@@ -89,8 +89,9 @@
 	* Fix problem reading slightly-corrupted dbf file.  [#568454]
 	* If we overflow the sheet tab area, put list in context menu.
 	* Fix ods load crash.  [#568994]
-	* Uses caches for bisection cases of VLOOKUP/HLOOKUP/LOOKUP/MATCH
+	* Use caches for bisection cases of VLOOKUP/HLOOKUP/LOOKUP/MATCH
 	too.  Fix issues with bools versus floats.
+	* Fix parsing problem for constructed ranges.  [#569730]
 
 --------------------------------------------------------------------------
 Gnumeric 1.9.3

Modified: trunk/src/parse-util.c
==============================================================================
--- trunk/src/parse-util.c	(original)
+++ trunk/src/parse-util.c	Thu Jan 29 21:36:21 2009
@@ -1103,27 +1103,29 @@
 	if (res->a.row_relative)
 		res->a.row -= pp->eval.row;
 
-	/* prepare as if it's a singleton, in case we want to fall back */
-	res->b.col = res->a.col;
-	res->b.row = res->a.row;
-	res->b.col_relative = res->a.col_relative;
-	res->b.row_relative = res->a.row_relative;
-	if (*tmp2 != ':')
-		return tmp2;
-
 	ptr = tmp2;
+	if (*ptr != ':')
+		goto singleton;
+
 	tmp1 = col_parse (ptr+1, &res->b.col, &res->b.col_relative);
 	if (!tmp1)
-		return ptr;	/* strange, but valid singleton */
+		goto singleton;	/* strange, but valid singleton */
 	tmp2 = row_parse (tmp1, &res->b.row, &res->b.row_relative);
 	if (!tmp2)
-		return ptr;	/* strange, but valid singleton */
+		goto singleton;	/* strange, but valid singleton */
 
 	if (res->b.col_relative)
 		res->b.col -= pp->eval.col;
 	if (res->b.row_relative)
 		res->b.row -= pp->eval.row;
 	return tmp2;
+
+ singleton:
+	res->b.col = res->a.col;
+	res->b.row = res->a.row;
+	res->b.col_relative = res->a.col_relative;
+	res->b.row_relative = res->a.row_relative;
+	return ptr;
 }
 
 #if 0



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