gnumeric r17023 - in trunk: plugins/fn-date src
- From: mortenw svn gnome org
- To: svn-commits-list gnome org
- Subject: gnumeric r17023 - in trunk: plugins/fn-date src
- Date: Mon, 15 Dec 2008 19:05:28 +0000 (UTC)
Author: mortenw
Date: Mon Dec 15 19:05:28 2008
New Revision: 17023
URL: http://svn.gnome.org/viewvc/gnumeric?rev=17023&view=rev
Log:
2008-12-15 Morten Welinder <terra gnome org>
* functions.c (gnumeric_unix2date): check for overflow.
Modified:
trunk/plugins/fn-date/ChangeLog
trunk/plugins/fn-date/functions.c
trunk/src/gnm-datetime.c
trunk/src/gnm-datetime.h
Modified: trunk/plugins/fn-date/functions.c
==============================================================================
--- trunk/plugins/fn-date/functions.c (original)
+++ trunk/plugins/fn-date/functions.c Mon Dec 15 19:05:28 2008
@@ -183,13 +183,18 @@
gnumeric_unix2date (GnmFuncEvalInfo *ei, GnmValue const * const *argv)
{
gnm_float futime = value_get_as_float (argv [0]);
- time_t utime = (time_t)futime;
+ time_t utime = (time_t)futime;
+ gnm_float serial;
/* Check for overflow. */
if (gnm_abs (futime - utime) >= 1.0)
return value_new_error_VALUE (ei->pos);
- return make_date (value_new_float (datetime_timet_to_serial_raw (utime, DATE_CONV (ei->pos)) +
+ serial = datetime_timet_to_serial_raw (utime, DATE_CONV (ei->pos));
+ if (serial == G_MAXINT)
+ return value_new_error_VALUE (ei->pos);
+
+ return make_date (value_new_float (serial +
(futime - utime) / DAY_SECONDS));
}
Modified: trunk/src/gnm-datetime.c
==============================================================================
--- trunk/src/gnm-datetime.c (original)
+++ trunk/src/gnm-datetime.c Mon Dec 15 19:05:28 2008
@@ -29,7 +29,7 @@
#include "gnm-datetime.h"
#include "number-match.h"
-static gnm_float
+gnm_float
datetime_value_to_serial_raw (GnmValue const *v, GODateConventions const *conv)
{
gnm_float serial;
Modified: trunk/src/gnm-datetime.h
==============================================================================
--- trunk/src/gnm-datetime.h (original)
+++ trunk/src/gnm-datetime.h Mon Dec 15 19:05:28 2008
@@ -8,6 +8,7 @@
G_BEGIN_DECLS
+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]