summaryrefslogtreecommitdiff
path: root/datetime.cc
diff options
context:
space:
mode:
authorJohn Wiegley <johnw@newartisans.com>2006-03-26 19:48:07 +0000
committerJohn Wiegley <johnw@newartisans.com>2008-04-13 05:48:45 -0400
commit5eb8e024511c68bbc9531996b8b8777bfc8b5861 (patch)
treefbe997aa008b738992e3ff757e73237c5090872e /datetime.cc
parent46887bad42530c8c7d5cf7970e8c71aa4e9e9591 (diff)
downloadledger-5eb8e024511c68bbc9531996b8b8777bfc8b5861.tar.gz
ledger-5eb8e024511c68bbc9531996b8b8777bfc8b5861.tar.bz2
ledger-5eb8e024511c68bbc9531996b8b8777bfc8b5861.zip
Always initialize tm_isdst to -1.
Diffstat (limited to 'datetime.cc')
-rw-r--r--datetime.cc27
1 files changed, 16 insertions, 11 deletions
diff --git a/datetime.cc b/datetime.cc
index 16c1e04e..6d6221e9 100644
--- a/datetime.cc
+++ b/datetime.cc
@@ -50,10 +50,12 @@ std::time_t interval_t::first(const std::time_t moment) const
struct std::tm * desc = std::localtime(&moment);
if (years)
desc->tm_mon = 0;
- desc->tm_mday = 1;
- desc->tm_hour = 0;
- desc->tm_min = 0;
- desc->tm_sec = 0;
+ desc->tm_mday = 1;
+ desc->tm_hour = 0;
+ desc->tm_min = 0;
+ desc->tm_sec = 0;
+ desc->tm_isdst = -1;
+
quant = std::mktime(desc);
std::time_t temp;
@@ -93,7 +95,7 @@ std::time_t interval_t::increment(const std::time_t moment) const
desc->tm_hour = 0;
desc->tm_min = 0;
desc->tm_sec = 0;
- desc->tm_isdst = 0;
+ desc->tm_isdst = -1;
then = std::mktime(desc);
}
@@ -111,9 +113,10 @@ static void parse_inclusion_specifier(const std::string& word,
throw interval_expr_error(std::string("Could not parse date mask: ") +
word);
- when.tm_hour = 0;
- when.tm_min = 0;
- when.tm_sec = 0;
+ when.tm_hour = 0;
+ when.tm_min = 0;
+ when.tm_sec = 0;
+ when.tm_isdst = -1;
bool saw_year = true;
bool saw_mon = true;
@@ -296,9 +299,10 @@ bool parse_date(const char * date_str, std::time_t * result, const int year)
if (! parse_date_mask(date_str, &when))
return false;
- when.tm_hour = 0;
- when.tm_min = 0;
- when.tm_sec = 0;
+ when.tm_hour = 0;
+ when.tm_min = 0;
+ when.tm_sec = 0;
+ when.tm_isdst = -1;
if (when.tm_year == -1)
when.tm_year = ((year == -1) ? now_year : (year - 1900));
@@ -348,6 +352,7 @@ bool quick_parse_date(const char * date_str, std::time_t * result)
if (base == -1 || year != base_year) {
struct std::tm when;
std::memset(&when, 0, sizeof(when));
+ when.tm_isdst = -1;
base_year = year == -1 ? now_year + 1900 : year;
when.tm_year = year == -1 ? now_year : year - 1900;