diff options
Diffstat (limited to '3rdParty/Boost/src/libs/program_options/src/winmain.cpp')
-rw-r--r-- | 3rdParty/Boost/src/libs/program_options/src/winmain.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/3rdParty/Boost/src/libs/program_options/src/winmain.cpp b/3rdParty/Boost/src/libs/program_options/src/winmain.cpp index 64cc790..8a7c43f 100644 --- a/3rdParty/Boost/src/libs/program_options/src/winmain.cpp +++ b/3rdParty/Boost/src/libs/program_options/src/winmain.cpp @@ -30,6 +30,7 @@ namespace boost { namespace program_options { std::string current; bool inside_quoted = false; + bool empty_quote = false; int backslash_count = 0; for(; i != e; ++i) { @@ -38,6 +39,7 @@ namespace boost { namespace program_options { // n/2 backslashes and is a quoted block delimiter if (backslash_count % 2 == 0) { current.append(backslash_count / 2, '\\'); + empty_quote = inside_quoted && current.empty(); inside_quoted = !inside_quoted; // '"' preceded by odd number (n) of backslashes generates // (n-1)/2 backslashes and is literal quote. @@ -59,6 +61,7 @@ namespace boost { namespace program_options { // Space outside quoted section terminate the current argument result.push_back(current); current.resize(0); + empty_quote = false; for(;i != e && isspace((unsigned char)*i); ++i) ; --i; @@ -74,7 +77,7 @@ namespace boost { namespace program_options { // If we have non-empty 'current' or we're still in quoted // section (even if 'current' is empty), add the last token. - if (!current.empty() || inside_quoted) + if (!current.empty() || inside_quoted || empty_quote) result.push_back(current); } return result; @@ -94,3 +97,4 @@ namespace boost { namespace program_options { }} #endif + |