gnumeric r16749 - in trunk: . src



Author: mortenw
Date: Tue Aug 26 20:47:35 2008
New Revision: 16749
URL: http://svn.gnome.org/viewvc/gnumeric?rev=16749&view=rev

Log:
2008-08-26  Morten Welinder  <terra gnome org>

	* src/number-match.c (value_is_error): Check for '#' here.
	(format_match_simple): Not here.
	(format_match): If matching fails in the existing-format case, try
	errors too.  Fixes #546759.



Modified:
   trunk/ChangeLog
   trunk/NEWS
   trunk/src/number-match.c

Modified: trunk/NEWS
==============================================================================
--- trunk/NEWS	(original)
+++ trunk/NEWS	Tue Aug 26 20:47:35 2008
@@ -30,6 +30,7 @@
 	* Make ssgrep a lot more grep-like.
 	* Unify functions that work on sorted ranges.
 	* Fix date entry problem.  [#540198]
+	* Fix entry of error constants.  [#546759] 
 
 Nick Lamb:
 	* Retain ()s.  [#69813]

Modified: trunk/src/number-match.c
==============================================================================
--- trunk/src/number-match.c	(original)
+++ trunk/src/number-match.c	Tue Aug 26 20:47:35 2008
@@ -53,6 +53,9 @@
 {
 	GnmStdError e;
 
+	if (str[0] != '#')
+		return NULL;
+
 	for (e = (GnmStdError)0; e < GNM_ERROR_UNKNOWN; e++)
 		if (0 == strcmp (str, value_error_name (e, TRUE)))
 			return value_new_error_std (NULL, e);
@@ -80,7 +83,7 @@
 		return value_new_bool (FALSE);
 
 	/* Is it an error?  */
-	if (*text == '#') {
+	{
 		GnmValue *err = value_is_error (text);
 		if (err != NULL)
 			return err;
@@ -1083,6 +1086,8 @@
 	case GO_FORMAT_PERCENTAGE:
 	case GO_FORMAT_SCIENTIFIC:
 		v = format_match_decimal_number (text, &fam);
+		if (!v)
+			v = value_is_error (text);
 		if (v)
 			value_set_fmt (v, cur_fmt);
 		return v;
@@ -1097,6 +1102,8 @@
 					   TRUE);
 		if (!v)
 			v = format_match_decimal_number (text, &fam);
+		if (!v)
+			v = value_is_error (text);
 		if (v)
 			value_set_fmt (v, cur_fmt);
 		return v;
@@ -1117,6 +1124,8 @@
 			v = format_match_time (text, TRUE, prefer_hour, FALSE);
 		if (!v)
 			v = format_match_decimal_number (text, &fam);
+		if (!v)
+			v = value_is_error (text);
 		if (v)
 			value_set_fmt (v, cur_fmt);
 		return v;
@@ -1126,7 +1135,8 @@
 		v = format_match_fraction (text, &denlen);
 		if (!v)
 			v = format_match_decimal_number (text, &fam);
-
+		if (!v)
+			v = value_is_error (text);
 		if (v)
 			value_set_fmt (v, cur_fmt);
 		return v;



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