gnumeric r17013 - in trunk: . src
- From: mortenw svn gnome org
- To: svn-commits-list gnome org
- Subject: gnumeric r17013 - in trunk: . src
- Date: Sun, 14 Dec 2008 20:45:56 +0000 (UTC)
Author: mortenw
Date: Sun Dec 14 20:45:56 2008
New Revision: 17013
URL: http://svn.gnome.org/viewvc/gnumeric?rev=17013&view=rev
Log:
2008-12-14 Morten Welinder <terra gnome org>
* src/gnm-datetime.c (datetime_value_to_serial): Handle overflow.
(datetime_value_to_g): Use G_MAXINT for errors.
(datetime_value_to_serial_raw): Make static. Return G_MAXINT for
errors.
Fixes #564502.
Modified:
trunk/ChangeLog
trunk/NEWS
trunk/src/gnm-datetime.c
trunk/src/gnm-datetime.h
Modified: trunk/NEWS
==============================================================================
--- trunk/NEWS (original)
+++ trunk/NEWS Sun Dec 14 20:45:56 2008
@@ -55,6 +55,7 @@
* Fix problem with saving huge values. [#552464]
* Dump information about number system into xml.
* Improve sc import. Not sure why. [#564495]
+ * Fix date overflow problem. [#564502]
--------------------------------------------------------------------------
Gnumeric 1.9.3
Modified: trunk/src/gnm-datetime.c
==============================================================================
--- trunk/src/gnm-datetime.c (original)
+++ trunk/src/gnm-datetime.c Sun Dec 14 20:45:56 2008
@@ -29,7 +29,7 @@
#include "gnm-datetime.h"
#include "number-match.h"
-gnm_float
+static gnm_float
datetime_value_to_serial_raw (GnmValue const *v, GODateConventions const *conv)
{
gnm_float serial;
@@ -44,7 +44,7 @@
serial = value_get_as_float (conversion);
value_release (conversion);
} else
- serial = 0;
+ serial = G_MAXINT;
}
return serial;
}
@@ -54,8 +54,10 @@
int
datetime_value_to_serial (GnmValue const *v, GODateConventions const *conv)
{
- return datetime_serial_raw_to_serial (
- datetime_value_to_serial_raw (v, conv));
+ double serial = datetime_value_to_serial_raw (v, conv);
+ if (serial >= G_MAXINT || serial < G_MININT)
+ return G_MAXINT;
+ return datetime_serial_raw_to_serial (serial);
}
/* ------------------------------------------------------------------------- */
@@ -64,7 +66,7 @@
datetime_value_to_g (GDate *res, GnmValue const *v, GODateConventions const *conv)
{
int serial = datetime_value_to_serial (v, conv);
- if (serial == 0) {
+ if (serial == G_MAXINT) {
g_date_clear (res, 1);
return FALSE;
}
Modified: trunk/src/gnm-datetime.h
==============================================================================
--- trunk/src/gnm-datetime.h (original)
+++ trunk/src/gnm-datetime.h Sun Dec 14 20:45:56 2008
@@ -8,8 +8,6 @@
G_BEGIN_DECLS
-/* These do not round and produces fractional values, i.e., includes time. */
-gnm_float datetime_value_to_serial_raw (GnmValue const *v, GODateConventions const *conv);
/* These are date-only, no time. */
gboolean datetime_value_to_g (GDate *res, GnmValue const *v, GODateConventions const *conv);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]