From 437d4aa7762646c9d167a7200ed72247f8b1203c Mon Sep 17 00:00:00 2001 From: Tatsuhiro Tsujikawa Date: Fri, 15 Apr 2016 22:48:11 +0900 Subject: [PATCH] Fix compile error with Android NDK --- src/OptionHandlerImpl.cc | 8 ++++---- src/RequestGroupMan.cc | 10 ++++++---- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/OptionHandlerImpl.cc b/src/OptionHandlerImpl.cc index 6dec8503..af17c176 100644 --- a/src/OptionHandlerImpl.cc +++ b/src/OptionHandlerImpl.cc @@ -623,10 +623,10 @@ void OptimizeConcurrentDownloadsOptionHandler::parseArg( PrefPtr pref = PREF_OPTIMIZE_CONCURRENT_DOWNLOADS_COEFFA; std::string* sptr = &coeff_a; for (;;) { - try { - double dbl = std::stod(*sptr); - } - catch (std::invalid_argument& ex) { + char *end; + errno = 0; + auto dbl = strtod(sptr->c_str(), &end); + if (errno != 0 || sptr->c_str() + sptr->size() != end) { throw DL_ABORT_EX(fmt("Bad number '%s'", sptr->c_str())); } option.put(pref, *sptr); diff --git a/src/RequestGroupMan.cc b/src/RequestGroupMan.cc index 5ca6f2b2..1eaf75e3 100644 --- a/src/RequestGroupMan.cc +++ b/src/RequestGroupMan.cc @@ -138,10 +138,12 @@ bool RequestGroupMan::setupOptimizeConcurrentDownloads(void) option_->getAsBool(PREF_OPTIMIZE_CONCURRENT_DOWNLOADS); if (optimizeConcurrentDownloads_) { if (option_->defined(PREF_OPTIMIZE_CONCURRENT_DOWNLOADS_COEFFA)) { - optimizeConcurrentDownloadsCoeffA_ = - std::stod(option_->get(PREF_OPTIMIZE_CONCURRENT_DOWNLOADS_COEFFA)); - optimizeConcurrentDownloadsCoeffB_ = - std::stod(option_->get(PREF_OPTIMIZE_CONCURRENT_DOWNLOADS_COEFFB)); + optimizeConcurrentDownloadsCoeffA_ = strtod( + option_->get(PREF_OPTIMIZE_CONCURRENT_DOWNLOADS_COEFFA).c_str(), + nullptr); + optimizeConcurrentDownloadsCoeffB_ = strtod( + option_->get(PREF_OPTIMIZE_CONCURRENT_DOWNLOADS_COEFFB).c_str(), + nullptr); } } return optimizeConcurrentDownloads_;