From ee53cdd23090d789b1c785746e7fa99b5e0c2e6f Mon Sep 17 00:00:00 2001 From: brianb Date: Sun, 15 Feb 2004 13:35:05 +0000 Subject: [PATCH] bug #688655 --- ChangeLog | 1 + src/libmdb/data.c | 22 +++++++++++++--------- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8985482..cdc1b4b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,6 @@ Sun Feb 15 07:37:19 EST 2004 Brian Bruns * src/gmdb2/debug.c: move declarations to top of function, fixes bug 675022 + * src/gmdb2/debug.c: merge patch for bug #688655, check negative values on datetime Sat Feb 14 14:41:00 EST 2004 Brian Bruns * include/.cvsignore: add mdbver.h diff --git a/src/libmdb/data.c b/src/libmdb/data.c index 6358a41..9dc72ec 100644 --- a/src/libmdb/data.c +++ b/src/libmdb/data.c @@ -1023,12 +1023,12 @@ static int trim_trailing_zeros(char * buff, int n) char *mdb_col_to_string(MdbHandle *mdb, unsigned char *buf, int start, int datatype, int size) { -/* FIX ME -- not thread safe */ -static char text[MDB_BIND_SIZE]; -time_t t; -int i, n; -float tf; -double td; + /* FIX ME -- not thread safe */ + static char text[MDB_BIND_SIZE]; + time_t t; + int i, n; + float tf; + double td; switch (datatype) { case MDB_BOOL: @@ -1087,9 +1087,13 @@ double td; return text; break; case MDB_SDATETIME: - t = (long int)((mdb_get_double(buf, start) - 25569.0) * 86400.0); - strftime(text, MDB_BIND_SIZE, date_fmt, - (struct tm*)gmtime(&t)); + td = mdb_get_double(mdb, start); + if (td > 1) { + t = (long int)((td - 25569.0) * 86400.0); + } else { + t = (long int)(td * 86400.0); + } + strftime(text, MDB_BIND_SIZE, date_fmt, (struct tm*)gmtime(&t)); return text; break;