aboutsummaryrefslogtreecommitdiff
path: root/src/rpcdump.cpp
diff options
context:
space:
mode:
authorWladimir J. van der Laan <laanwj@gmail.com>2014-02-17 11:32:43 +0100
committerWladimir J. van der Laan <laanwj@gmail.com>2014-02-17 18:42:05 +0100
commita143d4ce58d1103b37fa297fe6f4f4878eea59ca (patch)
treef4d7f696982e81937909305bf1c7d4a1a9e27f73 /src/rpcdump.cpp
parent129429dd8f6dfcb76fa1a481b91c06e36808523d (diff)
downloadbitcoin-a143d4ce58d1103b37fa297fe6f4f4878eea59ca.tar.xz
Fix crash in importwallet and dumpwallet formatting
- DecodeDumpTime was passing a statically allocated facet object to std::locale. However, "The constructed locale object takes over responsibility for deleting this facet object." causing a free() crash on scope exit. Fixes #3670. - EncodeDumpTime was using the wrong format character for dates (appears accidentally introduced in 51ed9ec9)
Diffstat (limited to 'src/rpcdump.cpp')
-rw-r--r--src/rpcdump.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/rpcdump.cpp b/src/rpcdump.cpp
index a912ea7670..9e1d47846e 100644
--- a/src/rpcdump.cpp
+++ b/src/rpcdump.cpp
@@ -23,13 +23,13 @@ using namespace std;
void EnsureWalletIsUnlocked();
std::string static EncodeDumpTime(int64_t nTime) {
- return DateTimeStrFormat("%Y-%m-%"PRId64"T%H:%M:%SZ", nTime);
+ return DateTimeStrFormat("%Y-%m-%dT%H:%M:%SZ", nTime);
}
int64_t static DecodeDumpTime(const std::string &str) {
- static boost::posix_time::time_input_facet facet("%Y-%m-%dT%H:%M:%SZ");
static const boost::posix_time::ptime epoch = boost::posix_time::from_time_t(0);
- const std::locale loc(std::locale::classic(), &facet);
+ static const std::locale loc(std::locale::classic(),
+ new boost::posix_time::time_input_facet("%Y-%m-%dT%H:%M:%SZ"));
std::istringstream iss(str);
iss.imbue(loc);
boost::posix_time::ptime ptime(boost::date_time::not_a_date_time);