+ guard call to std::ios_base::sync_with_stdio
This commit is contained in:
1 parent
9537c70b67
commit
481f377cfe
2 files changed
+16
-3
No files matched your search
+12
-3
@@ -22,6 +22,7 @@
|
|||||||
////////////////////
|
////////////////////
|
||||||
|
|
||||||
std::mutex JSON::_token;
|
std::mutex JSON::_token;
|
||||||
|
bool JSON::Parser::firstCall = true;
|
||||||
|
|
||||||
|
|
||||||
///////////////////////////////////
|
///////////////////////////////////
|
||||||
@@ -1776,9 +1777,17 @@ Initialize the JSON parser given an input stream \p _is.
|
|||||||
*/
|
*/
|
||||||
JSON::Parser::Parser(std::istream& _is)
|
JSON::Parser::Parser(std::istream& _is)
|
||||||
{
|
{
|
||||||
// from http://www.manticmoo.com/articles/jeff/programming/c++/making-io-streams-efficient-in-c++.php
|
// On first call, switch off syncing between C++ and C I/O. This call must
|
||||||
// Don't sync C++ and C I/O
|
// be done before first I/O operation as the behavior may be undefined
|
||||||
std::ios_base::sync_with_stdio(false);
|
// otherwise.
|
||||||
|
if (firstCall)
|
||||||
|
{
|
||||||
|
firstCall = false;
|
||||||
|
// Don't sync C++ and C I/O
|
||||||
|
// from http://www.manticmoo.com/articles/jeff/programming/c++/making-io-streams-efficient-in-c++.php
|
||||||
|
std::ios_base::sync_with_stdio(false);
|
||||||
|
}
|
||||||
|
|
||||||
while (_is)
|
while (_is)
|
||||||
{
|
{
|
||||||
std::string input_line;
|
std::string input_line;
|
||||||
|
|||||||
@@ -432,6 +432,10 @@ class JSON
|
|||||||
char _current {};
|
char _current {};
|
||||||
/// the position inside the input buffer
|
/// the position inside the input buffer
|
||||||
size_t _pos = 0;
|
size_t _pos = 0;
|
||||||
|
|
||||||
|
private:
|
||||||
|
/// variable to guard std::ios_base::sync_with_stdio
|
||||||
|
static bool firstCall;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user