From cdd5cf72556fdbe77877c7a50c5f184ef28eda4c Mon Sep 17 00:00:00 2001 From: Paolo Carlini Date: Fri, 24 Oct 2003 10:12:05 +0000 Subject: [PATCH] locale_facets.tcc (money_get::do_get(..., string_type&): Move an if block... 2003-10-24 Paolo Carlini * include/bits/locale_facets.tcc (money_get::do_get(..., string_type&): Move an if block, thus minimizing the amount of code processed anyway when __tmp_units.size() == 0. From-SVN: r72887 --- libstdc++-v3/ChangeLog | 6 +++++ libstdc++-v3/include/bits/locale_facets.tcc | 28 ++++++++++----------- 2 files changed, 20 insertions(+), 14 deletions(-) diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index ab64b7698c1b..16b221b8db5e 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,9 @@ +2003-10-24 Paolo Carlini + + * include/bits/locale_facets.tcc (money_get::do_get(..., + string_type&): Move an if block, thus minimizing the amount + of code processed anyway when __tmp_units.size() == 0. + 2003-10-24 Paolo Carlini * include/bits/locale_facets.tcc diff --git a/libstdc++-v3/include/bits/locale_facets.tcc b/libstdc++-v3/include/bits/locale_facets.tcc index fcc224c5e37b..ca9ad0510d62 100644 --- a/libstdc++-v3/include/bits/locale_facets.tcc +++ b/libstdc++-v3/include/bits/locale_facets.tcc @@ -1270,20 +1270,6 @@ namespace std } } - // Need to get the rest of the sign characters, if they exist. - const char_type __eof = static_cast(char_traits::eof()); - if (__sign.size() > 1) - { - const size_type __len = __sign.size(); - size_type __i = 1; - for (; __c != __eof && __i < __len; ++__i) - while (__beg != __end && __c != __sign[__i]) - __c = *(++__beg); - - if (__i != __len) - __testvalid = false; - } - const char_type __zero = __ctype.widen('0'); // Strip leading zeros. @@ -1322,6 +1308,20 @@ namespace std else __testvalid = false; + // Need to get the rest of the sign characters, if they exist. + const char_type __eof = static_cast(char_traits::eof()); + if (__sign.size() > 1) + { + const size_type __len = __sign.size(); + size_type __i = 1; + for (; __c != __eof && __i < __len; ++__i) + while (__beg != __end && __c != __sign[__i]) + __c = *(++__beg); + + if (__i != __len) + __testvalid = false; + } + // Iff no more characters are available. if (__c == __eof) __err |= ios_base::eofbit; -- 2.47.3