aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVincent Richard <[email protected]>2016-04-10 13:05:44 +0000
committerVincent Richard <[email protected]>2016-04-10 13:05:44 +0000
commit7c6e00798eea070acd0e933300af544303f13306 (patch)
treecaaca787e7be2180b523cc9db1c97f27fc2ae640
parentClarified object construction where 'enabled_shared_from_this' is used. Use i... (diff)
downloadvmime-7c6e00798eea070acd0e933300af544303f13306.tar.gz
vmime-7c6e00798eea070acd0e933300af544303f13306.zip
Always imbue C locale when using istringstream.
-rw-r--r--src/vmime/misc/importanceHelper.cpp2
-rw-r--r--src/vmime/net/pop3/POP3Connection.cpp2
-rw-r--r--src/vmime/net/pop3/POP3Folder.cpp4
-rw-r--r--src/vmime/net/smtp/SMTPConnection.cpp2
-rw-r--r--src/vmime/net/smtp/SMTPResponse.cpp1
-rw-r--r--src/vmime/relay.cpp2
-rw-r--r--src/vmime/utility/url.cpp3
7 files changed, 15 insertions, 1 deletions
diff --git a/src/vmime/misc/importanceHelper.cpp b/src/vmime/misc/importanceHelper.cpp
index b13f7466..e1228ee1 100644
--- a/src/vmime/misc/importanceHelper.cpp
+++ b/src/vmime/misc/importanceHelper.cpp
@@ -67,6 +67,8 @@ importanceHelper::Importance importanceHelper::getImportanceHeader(shared_ptr <c
int n = IMPORTANCE_NORMAL;
std::istringstream iss(value);
+ iss.imbue(std::locale::classic());
+
iss >> n;
Importance i = IMPORTANCE_NORMAL;
diff --git a/src/vmime/net/pop3/POP3Connection.cpp b/src/vmime/net/pop3/POP3Connection.cpp
index 9fa12fa5..27ab7aa2 100644
--- a/src/vmime/net/pop3/POP3Connection.cpp
+++ b/src/vmime/net/pop3/POP3Connection.cpp
@@ -396,6 +396,8 @@ void POP3Connection::authenticateSASL()
const string list(x.begin() + 5, x.end());
std::istringstream iss(list);
+ iss.imbue(std::locale::classic());
+
string mech;
while (iss >> mech)
diff --git a/src/vmime/net/pop3/POP3Folder.cpp b/src/vmime/net/pop3/POP3Folder.cpp
index b3bf88c9..0e232c1a 100644
--- a/src/vmime/net/pop3/POP3Folder.cpp
+++ b/src/vmime/net/pop3/POP3Folder.cpp
@@ -144,6 +144,7 @@ void POP3Folder::open(const int mode, bool failIfModeIsNotAvailable)
throw exceptions::command_error("STAT", response->getFirstLine());
std::istringstream iss(response->getText());
+ iss.imbue(std::locale::classic());
iss >> m_messageCount;
if (iss.fail())
@@ -372,6 +373,7 @@ void POP3Folder::fetchMessages(std::vector <shared_ptr <message> >& msg, const f
size_t size = 0;
std::istringstream iss((*x).second);
+ iss.imbue(std::locale::classic());
iss >> size;
m->m_size = size;
@@ -456,6 +458,7 @@ void POP3Folder::fetchMessage(shared_ptr <message> msg, const fetchAttributes& o
size_t size = 0;
std::istringstream iss(string(it, responseText.end()));
+ iss.imbue(std::locale::classic());
iss >> size;
dynamicCast <POP3Message>(msg)->m_size = size;
@@ -677,6 +680,7 @@ shared_ptr <folderStatus> POP3Folder::getStatus()
size_t count = 0;
std::istringstream iss(response->getText());
+ iss.imbue(std::locale::classic());
iss >> count;
shared_ptr <POP3FolderStatus> status = make_shared <POP3FolderStatus>();
diff --git a/src/vmime/net/smtp/SMTPConnection.cpp b/src/vmime/net/smtp/SMTPConnection.cpp
index 26f1a4b0..3785126a 100644
--- a/src/vmime/net/smtp/SMTPConnection.cpp
+++ b/src/vmime/net/smtp/SMTPConnection.cpp
@@ -234,7 +234,9 @@ void SMTPConnection::helo()
for (size_t i = 1, n = resp->getLineCount() ; i < n ; ++i)
{
const string line = resp->getLineAt(i).getText();
+
std::istringstream iss(line);
+ iss.imbue(std::locale::classic());
string ext;
iss >> ext;
diff --git a/src/vmime/net/smtp/SMTPResponse.cpp b/src/vmime/net/smtp/SMTPResponse.cpp
index 75dbbf6b..b4b2c542 100644
--- a/src/vmime/net/smtp/SMTPResponse.cpp
+++ b/src/vmime/net/smtp/SMTPResponse.cpp
@@ -217,6 +217,7 @@ const SMTPResponse::enhancedStatusCode SMTPResponse::extractEnhancedCode(const s
enhancedStatusCode enhCode;
std::istringstream iss(responseText);
+ iss.imbue(std::locale::classic());
if (std::isdigit(iss.peek()))
{
diff --git a/src/vmime/relay.cpp b/src/vmime/relay.cpp
index e5d30c9e..2f4cf350 100644
--- a/src/vmime/relay.cpp
+++ b/src/vmime/relay.cpp
@@ -79,6 +79,8 @@ void relay::parseImpl
std::istringstream iss(string
(buffer.begin() + position, buffer.begin() + position + (p - pstart)));
+ iss.imbue(std::locale::classic());
+
string word;
std::vector <string> previous;
diff --git a/src/vmime/utility/url.cpp b/src/vmime/utility/url.cpp
index ce0dc39a..4d7e2920 100644
--- a/src/vmime/utility/url.cpp
+++ b/src/vmime/utility/url.cpp
@@ -256,8 +256,9 @@ void url::parse(const string& str)
throw exceptions::malformed_url("Port can only contain digits");
std::istringstream iss(port);
- port_t portNum = 0;
+ iss.imbue(std::locale::classic());
+ port_t portNum = 0;
iss >> portNum;
if (portNum == 0)