aboutsummaryrefslogtreecommitdiff
path: root/contrib/epee/include
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/epee/include')
-rw-r--r--contrib/epee/include/misc_log_ex.h2
-rw-r--r--contrib/epee/include/net/abstract_tcp_server2.inl6
-rw-r--r--contrib/epee/include/storages/parserse_base_utils.h6
-rw-r--r--contrib/epee/include/storages/portable_storage_from_json.h52
4 files changed, 51 insertions, 15 deletions
diff --git a/contrib/epee/include/misc_log_ex.h b/contrib/epee/include/misc_log_ex.h
index 530f8e636..9100a8db3 100644
--- a/contrib/epee/include/misc_log_ex.h
+++ b/contrib/epee/include/misc_log_ex.h
@@ -32,7 +32,9 @@
#include "easylogging++.h"
+#undef MONERO_DEFAULT_LOG_CATEGORY
#define MONERO_DEFAULT_LOG_CATEGORY "default"
+
#define MAX_LOG_FILE_SIZE 104850000 // 100 MB - 7600 bytes
#define MAX_LOG_FILES 50
diff --git a/contrib/epee/include/net/abstract_tcp_server2.inl b/contrib/epee/include/net/abstract_tcp_server2.inl
index 5dbb7a478..9b03941ee 100644
--- a/contrib/epee/include/net/abstract_tcp_server2.inl
+++ b/contrib/epee/include/net/abstract_tcp_server2.inl
@@ -393,7 +393,7 @@ PRAGMA_WARNING_DISABLE_VS(4355)
//ask it inside(!) critical region if we still able to go in event wait...
size_t cnt = socket_.get_io_service().poll_one();
if(!cnt)
- misc_utils::sleep_no_w(0);
+ misc_utils::sleep_no_w(1);
}
return true;
@@ -889,7 +889,9 @@ POP_WARNINGS
{
try
{
- io_service_.run();
+ size_t cnt = io_service_.run();
+ if (cnt == 0)
+ misc_utils::sleep_no_w(1);
}
catch(const std::exception& ex)
{
diff --git a/contrib/epee/include/storages/parserse_base_utils.h b/contrib/epee/include/storages/parserse_base_utils.h
index 8c6c1a64d..31495ae13 100644
--- a/contrib/epee/include/storages/parserse_base_utils.h
+++ b/contrib/epee/include/storages/parserse_base_utils.h
@@ -39,12 +39,14 @@ namespace misc_utils
inline std::string transform_to_escape_sequence(const std::string& src)
{
static const char escaped[] = "\b\f\n\r\t\v\"\\/";
- if (std::find_first_of(src.begin(), src.end(), escaped, escaped + sizeof(escaped)) == src.end())
+ std::string::const_iterator it = std::find_first_of(src.begin(), src.end(), escaped, escaped + sizeof(escaped));
+ if (it == src.end())
return src;
std::string res;
res.reserve(2 * src.size());
- for(std::string::const_iterator it = src.begin(); it!=src.end(); ++it)
+ res.assign(src.begin(), it);
+ for(; it!=src.end(); ++it)
{
switch(*it)
{
diff --git a/contrib/epee/include/storages/portable_storage_from_json.h b/contrib/epee/include/storages/portable_storage_from_json.h
index 5b2eafa9a..0307b732c 100644
--- a/contrib/epee/include/storages/portable_storage_from_json.h
+++ b/contrib/epee/include/storages/portable_storage_from_json.h
@@ -125,16 +125,22 @@ namespace epee
{
if(is_signed)
{
- int64_t nval = boost::lexical_cast<int64_t>(val);
+ errno = 0;
+ int64_t nval = strtoll(val.c_str(), NULL, 10);
+ if (errno) throw std::runtime_error("Invalid number: " + val);
stg.set_value(name, nval, current_section);
}else
{
- uint64_t nval = boost::lexical_cast<uint64_t >(val);
+ errno = 0;
+ uint64_t nval = strtoull(val.c_str(), NULL, 10);
+ if (errno) throw std::runtime_error("Invalid number: " + val);
stg.set_value(name, nval, current_section);
}
}else
{
- double nval = boost::lexical_cast<double>(val);
+ errno = 0;
+ double nval = strtod(val.c_str(), NULL);
+ if (errno) throw std::runtime_error("Invalid number: " + val);
stg.set_value(name, nval, current_section);
}
state = match_state_wonder_after_value;
@@ -208,12 +214,25 @@ namespace epee
match_number2(it, buf_end, val, is_v_float, is_signed_val);
if(!is_v_float)
{
- int64_t nval = boost::lexical_cast<int64_t>(val);//bool res = string_tools::string_to_num_fast(val, nval);
- h_array = stg.insert_first_value(name, nval, current_section);
+ if (is_signed_val)
+ {
+ errno = 0;
+ int64_t nval = strtoll(val.c_str(), NULL, 10);
+ if (errno) throw std::runtime_error("Invalid number: " + val);
+ h_array = stg.insert_first_value(name, nval, current_section);
+ }else
+ {
+ errno = 0;
+ uint64_t nval = strtoull(val.c_str(), NULL, 10);
+ if (errno) throw std::runtime_error("Invalid number: " + val);
+ h_array = stg.insert_first_value(name, nval, current_section);
+ }
CHECK_AND_ASSERT_THROW_MES(h_array, " failed to insert values section entry");
}else
{
- double nval = boost::lexical_cast<double>(val);//bool res = string_tools::string_to_num_fast(val, nval);
+ errno = 0;
+ double nval = strtod(val.c_str(), NULL);
+ if (errno) throw std::runtime_error("Invalid number: " + val);
h_array = stg.insert_first_value(name, nval, current_section);
CHECK_AND_ASSERT_THROW_MES(h_array, " failed to insert values section entry");
}
@@ -286,13 +305,24 @@ namespace epee
bool insert_res = false;
if(!is_v_float)
{
- int64_t nval = boost::lexical_cast<int64_t>(val); //bool res = string_tools::string_to_num_fast(val, nval);
- insert_res = stg.insert_next_value(h_array, nval);
-
+ if (is_signed_val)
+ {
+ errno = 0;
+ int64_t nval = strtoll(val.c_str(), NULL, 10);
+ if (errno) throw std::runtime_error("Invalid number: " + val);
+ insert_res = stg.insert_next_value(h_array, nval);
+ }else
+ {
+ errno = 0;
+ uint64_t nval = strtoull(val.c_str(), NULL, 10);
+ if (errno) throw std::runtime_error("Invalid number: " + val);
+ insert_res = stg.insert_next_value(h_array, nval);
+ }
}else
{
- //TODO: optimize here if need
- double nval = boost::lexical_cast<double>(val); //string_tools::string_to_num_fast(val, nval);
+ errno = 0;
+ double nval = strtod(val.c_str(), NULL);
+ if (errno) throw std::runtime_error("Invalid number: " + val);
insert_res = stg.insert_next_value(h_array, nval);
}
CHECK_AND_ASSERT_THROW_MES(insert_res, "Failed to insert next value");