$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r86322 - in branches/release: boost/date_time libs/date_time/test/gregorian
From: marshall_at_[hidden]
Date: 2013-10-15 11:22:02
Author: marshall
Date: 2013-10-15 11:22:02 EDT (Tue, 15 Oct 2013)
New Revision: 86322
URL: http://svn.boost.org/trac/boost/changeset/86322
Log:
Merge DateTime bug fix to Release; Fixes #9216
Properties modified: 
   branches/release/boost/date_time/format_date_parser.hpp   (contents, props changed)
   branches/release/libs/date_time/test/gregorian/testdate_input_facet.cpp   (contents, props changed)
Text files modified: 
   branches/release/boost/date_time/format_date_parser.hpp                 |    12 ++++++++----                            
   branches/release/boost/date_time/time_facet.hpp                         |     4 ++--                                    
   branches/release/libs/date_time/test/gregorian/testdate_input_facet.cpp |     5 +++++                                   
   3 files changed, 15 insertions(+), 6 deletions(-)
Modified: branches/release/boost/date_time/format_date_parser.hpp
==============================================================================
--- branches/release/boost/date_time/format_date_parser.hpp	Tue Oct 15 10:08:57 2013	(r86321)
+++ branches/release/boost/date_time/format_date_parser.hpp	2013-10-15 11:22:02 EDT (Tue, 15 Oct 2013)	(r86322)
@@ -271,7 +271,8 @@
     const_itr itr(format_str.begin());
     while (itr != format_str.end() && (sitr != stream_end)) {
       if (*itr == '%') {
-        itr++;
+        if ( ++itr == format_str.end())
+        	break;
         if (*itr != '%') {
           switch(*itr) {
           case 'a': 
@@ -476,7 +477,8 @@
     const_itr itr(format_str.begin());
     while (itr != format_str.end() && (sitr != stream_end)) {
       if (*itr == '%') {
-        itr++;
+        if ( ++itr == format_str.end())
+        	break;
         if (*itr != '%') {
           switch(*itr) {
           case 'b': 
@@ -577,7 +579,8 @@
     const_itr itr(format_str.begin());
     while (itr != format_str.end() && (sitr != stream_end)) {
       if (*itr == '%') {
-        itr++;
+        if ( ++itr == format_str.end())
+        	break;
         if (*itr != '%') {
           switch(*itr) {
           case 'a': 
@@ -666,7 +669,8 @@
     const_itr itr(format_str.begin());
     while (itr != format_str.end() && (sitr != stream_end)) {
       if (*itr == '%') {
-        itr++;
+        if ( ++itr == format_str.end())
+        	break;
         if (*itr != '%') {
           //match_results mr;
           switch(*itr) {
Modified: branches/release/boost/date_time/time_facet.hpp
==============================================================================
--- branches/release/boost/date_time/time_facet.hpp	Tue Oct 15 10:08:57 2013	(r86321)
+++ branches/release/boost/date_time/time_facet.hpp	2013-10-15 11:22:02 EDT (Tue, 15 Oct 2013)	(r86322)
@@ -822,7 +822,7 @@
         const_itr itr(m_time_duration_format.begin());
         while (itr != m_time_duration_format.end() && (sitr != stream_end)) {
           if (*itr == '%') {
-            ++itr;
+            if (++itr == m_time_duration_format.end()) break;
             if (*itr != '%') {
               switch(*itr) {
               case 'O':
@@ -994,7 +994,7 @@
         const_itr itr(this->m_format.begin());
         while (itr != this->m_format.end() && (sitr != stream_end)) {
           if (*itr == '%') {
-            ++itr;
+            if (++itr == this->m_format.end()) break;
             if (*itr != '%') {
               // the cases are grouped by date & time flags - not alphabetical order
               switch(*itr) {
Modified: branches/release/libs/date_time/test/gregorian/testdate_input_facet.cpp
==============================================================================
--- branches/release/libs/date_time/test/gregorian/testdate_input_facet.cpp	Tue Oct 15 10:08:57 2013	(r86321)
+++ branches/release/libs/date_time/test/gregorian/testdate_input_facet.cpp	2013-10-15 11:22:02 EDT (Tue, 15 Oct 2013)	(r86322)
@@ -212,6 +212,11 @@
     ss.str("%2005");
     ss >> y;
     check_equal("Multiple literal '%'s in year format", y, greg_year(2005));
+
+    f->year_format("%Y%");
+    ss.str("2005%");
+    ss >> y;
+    check_equal("Trailing'%'s in year format", y, greg_year(2005));
   }
 
   // All days, month, weekday, day, and year formats have been tested