$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r78740 - in branches/release: boost/asio/detail boost/asio/detail/impl libs/asio/doc
From: chris_at_[hidden]
Date: 2012-05-29 03:26:59
Author: chris_kohlhoff
Date: 2012-05-29 03:26:58 EDT (Tue, 29 May 2012)
New Revision: 78740
URL: http://svn.boost.org/trac/boost/changeset/78740
Log:
Merge from trunk:
* Add support for g++ 4.7 when compiling in C++11 mode. Update revision
  history. Fixes #6620.
* Use the thread's private_op_queue for handlers returned by the reactor task.
  This fixes a problem where signal_set handlers are not being called when the
  io_service's concurrency hint is set to 1. Fixes #6657.
Text files modified: 
   branches/release/boost/asio/detail/config.hpp               |    18 +++++++++++++++++-                      
   branches/release/boost/asio/detail/impl/task_io_service.ipp |    10 ++++------                              
   branches/release/libs/asio/doc/history.qbk                  |     7 ++++++-                                 
   3 files changed, 27 insertions(+), 8 deletions(-)
Modified: branches/release/boost/asio/detail/config.hpp
==============================================================================
--- branches/release/boost/asio/detail/config.hpp	(original)
+++ branches/release/boost/asio/detail/config.hpp	2012-05-29 03:26:58 EDT (Tue, 29 May 2012)
@@ -112,6 +112,20 @@
 # endif // defined(__GNUC__)
 #endif // !defined(BOOST_ASIO_DISABLE_STD_SYSTEM_ERROR)
 
+// Compliant C++11 compilers put noexcept specifiers on error_category members.
+#if !defined(BOOST_ASIO_ERROR_CATEGORY_NOEXCEPT)
+# if defined(__GNUC__)
+#  if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)) || (__GNUC__ > 4)
+#   if defined(__GXX_EXPERIMENTAL_CXX0X__)
+#     define BOOST_ASIO_ERROR_CATEGORY_NOEXCEPT noexcept(true)
+#   endif // defined(__GXX_EXPERIMENTAL_CXX0X__)
+#  endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)) || (__GNUC__ > 4)
+# endif // defined(__GNUC__)
+# if !defined(BOOST_ASIO_ERROR_CATEGORY_NOEXCEPT)
+#  define BOOST_ASIO_ERROR_CATEGORY_NOEXCEPT
+# endif // !defined(BOOST_ASIO_ERROR_CATEGORY_NOEXCEPT)
+#endif // !defined(BOOST_ASIO_ERROR_CATEGORY_NOEXCEPT)
+
 // Standard library support for arrays.
 #if !defined(BOOST_ASIO_DISABLE_STD_ARRAY)
 # if defined(__GNUC__)
@@ -163,7 +177,9 @@
 #  if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 6)) || (__GNUC__ > 4)
 #   if defined(__GXX_EXPERIMENTAL_CXX0X__)
 #    define BOOST_ASIO_HAS_STD_CHRONO
-#    define BOOST_ASIO_HAS_STD_CHRONO_MONOTONIC_CLOCK
+#    if ((__GNUC__ == 4) && (__GNUC_MINOR__ == 6))
+#     define BOOST_ASIO_HAS_STD_CHRONO_MONOTONIC_CLOCK
+#    endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ == 6))
 #   endif // defined(__GXX_EXPERIMENTAL_CXX0X__)
 #  endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 6)) || (__GNUC__ > 4)
 # endif // defined(__GNUC__)
Modified: branches/release/boost/asio/detail/impl/task_io_service.ipp
==============================================================================
--- branches/release/boost/asio/detail/impl/task_io_service.ipp	(original)
+++ branches/release/boost/asio/detail/impl/task_io_service.ipp	2012-05-29 03:26:58 EDT (Tue, 29 May 2012)
@@ -369,14 +369,13 @@
         else
           lock.unlock();
 
-        op_queue<operation> completed_ops;
-        task_cleanup on_exit = { this, &lock, &completed_ops };
+        task_cleanup on_exit = { this, &lock, &private_op_queue };
         (void)on_exit;
 
         // Run the task. May throw an exception. Only block if the operation
         // queue is empty and we're not polling, otherwise we want to return
         // as soon as possible.
-        task_->run(!more_handlers, completed_ops);
+        task_->run(!more_handlers, private_op_queue);
       }
       else
       {
@@ -423,14 +422,13 @@
     lock.unlock();
 
     {
-      op_queue<operation> completed_ops;
-      task_cleanup c = { this, &lock, &completed_ops };
+      task_cleanup c = { this, &lock, &private_op_queue };
       (void)c;
 
       // Run the task. May throw an exception. Only block if the operation
       // queue is empty and we're not polling, otherwise we want to return
       // as soon as possible.
-      task_->run(false, completed_ops);
+      task_->run(false, private_op_queue);
     }
 
     o = op_queue_.front();
Modified: branches/release/libs/asio/doc/history.qbk
==============================================================================
--- branches/release/libs/asio/doc/history.qbk	(original)
+++ branches/release/libs/asio/doc/history.qbk	2012-05-29 03:26:58 EDT (Tue, 29 May 2012)
@@ -14,10 +14,15 @@
 * Fixed the `epoll_reactor` handling of out-of-band data, which was broken by
   an incomplete fix in the last release.
 * Changed Asio's SSL wrapper to respect OpenSSL's `OPENSSL_NO_ENGINE` feature
-  test `#define`.
+  test `#define` ([@https://svn.boost.org/trac/boost/ticket/6432 #6432]).
 * Fixed `windows::object_handle` so that it works with Windows compilers that
   support C++11 move semantics (such as [^g++]).
 * Improved the performance of strand rescheduling.
+* Added support for [^g++] 4.7 when compiling in C++11 mode
+  ([@https://svn.boost.org/trac/boost/ticket/6620 #6620]).
+* Fixed a problem where `signal_set` handlers were not being delivered when
+  the `io_service` was constructed with a `concurrency_hint` of 1
+  ([@https://svn.boost.org/trac/boost/ticket/6657 #6657]).
 
 [heading Asio 1.8.0 / Boost 1.49]