OBS User unknown 2008-01-30 16:55:59 +00:00 committed by Git OBS Bridge
parent bcc0fd3890
commit fc05f47b44
34 changed files with 2435 additions and 540 deletions

51
NEWS
View File

@ -1,51 +0,0 @@
Latest News
December 5, 2005 - Version 1.33.1
Updated Libraries
* Any Library: Cast to reference types introduced in 1.33.0 is now
documented on any_cast documentation page.
* Config Library: Don't undef BOOST_LIB_TOOLSET after use.
* Boost.Python:
o The build now assumes Python 2.4 by default, rather than 2.2
o Support Python that's built without Unicode support
o Support for wrapping classes with overloaded address-of (&)
operators
* Smart Pointer Library: Fixed problems under Metrowerks CodeWarrior on
PowerPC (Mac OS X) with inlining on, GNU GCC on PowerPC 64.
* Regex Library: Fixed the supplied makefiles, and other small compiler
specific changes. Refer to the regex history page for more information on
these and other small changes.
* Iostreams Library: Improved the interface for accessing a chain's
components, added is_open members to the file and file descriptor devices,
fixed memory-mapped files on Windows, and made minor changes to the
documentation.
* Functional/Hash Library: Fixed the points example.
* Multi-index Containers Library: Fixed a problem with multithreaded
code, and other minor changes. Refer to the library release notes for
further details.
* Graph Library:
o Fixed a problem with the relaxed heap on x86 Linux (fixes bug in
dijkstra_shortest_paths).
o Fixed problems with cuthill_mckee_ordering and king_ordering
producing no results.
o Added color_map parameter to dijkstra_shortest_paths.
* Signals Library: Fixed problems with the use of Signals across shared
library boundaries.
* Thread library: read_write_mutex has been removed due to problems with
deadlocks.
* Wave library (V1.2.1) Fixed a couple of problems, refer to the change
log for further details.

702
boost-Boost.Function.patch Normal file
View File

@ -0,0 +1,702 @@
--- boost/function/function_base.hpp
+++ boost/function/function_base.hpp
@@ -15,6 +15,7 @@
#include <memory>
#include <new>
#include <typeinfo>
+#include <functional> // unary_function, binary_function
#include <boost/config.hpp>
#include <boost/assert.hpp>
#include <boost/type_traits/is_integral.hpp>
@@ -30,6 +31,20 @@
#endif
#include <boost/function_equal.hpp>
+#if defined(BOOST_MSVC)
+# pragma warning( push )
+# pragma warning( disable : 4793 ) // complaint about native code generation
+# pragma warning( disable : 4127 ) // "conditional expression is constant"
+#endif
+
+// Define BOOST_FUNCTION_STD_NS to the namespace that contains type_info.
+#ifdef BOOST_NO_EXCEPTION_STD_NAMESPACE
+// Embedded VC++ does not have type_info in namespace std
+# define BOOST_FUNCTION_STD_NS
+#else
+# define BOOST_FUNCTION_STD_NS std
+#endif
+
// Borrowed from Boost.Python library: determines the cases where we
// need to use std::type_info::name to compare instead of operator==.
# if (defined(__GNUC__) && __GNUC__ >= 3) \
@@ -59,7 +74,7 @@
#if defined (BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
|| defined(BOOST_BCB_PARTIAL_SPECIALIZATION_BUG) \
- || !(BOOST_STRICT_CONFIG || !defined(__SUNPRO_CC) || __SUNPRO_CC > 0x540)
+ || !(defined(BOOST_STRICT_CONFIG) || !defined(__SUNPRO_CC) || __SUNPRO_CC > 0x540)
# define BOOST_FUNCTION_NO_FUNCTION_TYPE_SYNTAX
#endif
@@ -198,8 +213,8 @@
struct reference_manager
{
static inline void
- get(const function_buffer& in_buffer, function_buffer& out_buffer,
- functor_manager_operation_type op)
+ manage(const function_buffer& in_buffer, function_buffer& out_buffer,
+ functor_manager_operation_type op)
{
switch (op) {
case clone_functor_tag:
@@ -215,8 +230,8 @@
// DPG TBD: Since we're only storing a pointer, it's
// possible that the user could ask for a base class or
// derived class. Is that okay?
- const std::type_info& check_type =
- *static_cast<const std::type_info*>(out_buffer.const_obj_ptr);
+ const BOOST_FUNCTION_STD_NS::type_info& check_type =
+ *static_cast<const BOOST_FUNCTION_STD_NS::type_info*>(out_buffer.const_obj_ptr);
if (BOOST_FUNCTION_COMPARE_TYPE_ID(check_type, typeid(F)))
out_buffer.obj_ptr = in_buffer.obj_ptr;
else
@@ -265,8 +280,8 @@
else if (op == destroy_functor_tag)
out_buffer.func_ptr = 0;
else /* op == check_functor_type_tag */ {
- const std::type_info& check_type =
- *static_cast<const std::type_info*>(out_buffer.const_obj_ptr);
+ const BOOST_FUNCTION_STD_NS::type_info& check_type =
+ *static_cast<const BOOST_FUNCTION_STD_NS::type_info*>(out_buffer.const_obj_ptr);
if (BOOST_FUNCTION_COMPARE_TYPE_ID(check_type, typeid(Functor)))
out_buffer.obj_ptr = &in_buffer.func_ptr;
else
@@ -287,8 +302,8 @@
// Some compilers (Borland, vc6, ...) are unhappy with ~functor_type.
reinterpret_cast<functor_type*>(&out_buffer.data)->~Functor();
} else /* op == check_functor_type_tag */ {
- const std::type_info& check_type =
- *static_cast<const std::type_info*>(out_buffer.const_obj_ptr);
+ const BOOST_FUNCTION_STD_NS::type_info& check_type =
+ *static_cast<const BOOST_FUNCTION_STD_NS::type_info*>(out_buffer.const_obj_ptr);
if (BOOST_FUNCTION_COMPARE_TYPE_ID(check_type, typeid(Functor)))
out_buffer.obj_ptr = &in_buffer.data;
else
@@ -348,8 +363,8 @@
# endif // BOOST_NO_STD_ALLOCATOR
out_buffer.obj_ptr = 0;
} else /* op == check_functor_type_tag */ {
- const std::type_info& check_type =
- *static_cast<const std::type_info*>(out_buffer.const_obj_ptr);
+ const BOOST_FUNCTION_STD_NS::type_info& check_type =
+ *static_cast<const BOOST_FUNCTION_STD_NS::type_info*>(out_buffer.const_obj_ptr);
if (BOOST_FUNCTION_COMPARE_TYPE_ID(check_type, typeid(Functor)))
out_buffer.obj_ptr = in_buffer.obj_ptr;
else
@@ -368,6 +383,15 @@
mpl::bool_<(function_allows_small_object_optimization<functor_type>::value)>());
}
+ // For member pointers, we treat them as function objects with
+ // the small-object optimization always enabled.
+ static inline void
+ manager(const function_buffer& in_buffer, function_buffer& out_buffer,
+ functor_manager_operation_type op, member_ptr_tag)
+ {
+ manager(in_buffer, out_buffer, op, mpl::true_());
+ }
+
public:
/* Dispatch to an appropriate manager based on whether we have a
function pointer or a function object pointer. */
@@ -456,7 +480,6 @@
*/
struct vtable_base
{
- vtable_base() : manager(0) { }
void (*manager)(const function_buffer& in_buffer,
function_buffer& out_buffer,
functor_manager_operation_type op);
@@ -480,13 +503,13 @@
/** Retrieve the type of the stored function object, or typeid(void)
if this is empty. */
- const std::type_info& target_type() const
+ const BOOST_FUNCTION_STD_NS::type_info& target_type() const
{
if (!vtable) return typeid(void);
detail::function::function_buffer type;
vtable->manager(functor, type, detail::function::get_functor_type_tag);
- return *static_cast<const std::type_info*>(type.const_obj_ptr);
+ return *static_cast<const BOOST_FUNCTION_STD_NS::type_info*>(type.const_obj_ptr);
}
template<typename Functor>
@@ -558,7 +581,7 @@
#endif
public: // should be protected, but GCC 2.95.3 will fail to allow access
- detail::function::vtable_base* vtable;
+ const detail::function::vtable_base* vtable;
mutable detail::function::function_buffer functor;
};
@@ -733,4 +756,8 @@
#undef BOOST_FUNCTION_ENABLE_IF_NOT_INTEGRAL
#undef BOOST_FUNCTION_COMPARE_TYPE_ID
+#if defined(BOOST_MSVC)
+# pragma warning( pop )
+#endif
+
#endif // BOOST_FUNCTION_BASE_HEADER
--- boost/function/function_template.hpp
+++ boost/function/function_template.hpp
@@ -11,6 +11,11 @@
// protection.
#include <boost/function/detail/prologue.hpp>
+#if defined(BOOST_MSVC)
+# pragma warning( push )
+# pragma warning( disable : 4127 ) // "conditional expression is constant"
+#endif
+
#define BOOST_FUNCTION_TEMPLATE_PARMS BOOST_PP_ENUM_PARAMS(BOOST_FUNCTION_NUM_ARGS, typename T)
#define BOOST_FUNCTION_TEMPLATE_ARGS BOOST_PP_ENUM_PARAMS(BOOST_FUNCTION_NUM_ARGS, T)
@@ -54,12 +59,20 @@
BOOST_JOIN(function_ref_invoker,BOOST_FUNCTION_NUM_ARGS)
#define BOOST_FUNCTION_VOID_FUNCTION_REF_INVOKER \
BOOST_JOIN(void_function_ref_invoker,BOOST_FUNCTION_NUM_ARGS)
+#define BOOST_FUNCTION_MEMBER_INVOKER \
+ BOOST_JOIN(member_invoker,BOOST_FUNCTION_NUM_ARGS)
+#define BOOST_FUNCTION_VOID_MEMBER_INVOKER \
+ BOOST_JOIN(void_member_invoker,BOOST_FUNCTION_NUM_ARGS)
#define BOOST_FUNCTION_GET_FUNCTION_INVOKER \
BOOST_JOIN(get_function_invoker,BOOST_FUNCTION_NUM_ARGS)
#define BOOST_FUNCTION_GET_FUNCTION_OBJ_INVOKER \
BOOST_JOIN(get_function_obj_invoker,BOOST_FUNCTION_NUM_ARGS)
#define BOOST_FUNCTION_GET_FUNCTION_REF_INVOKER \
BOOST_JOIN(get_function_ref_invoker,BOOST_FUNCTION_NUM_ARGS)
+#define BOOST_FUNCTION_GET_MEMBER_INVOKER \
+ BOOST_JOIN(get_member_invoker,BOOST_FUNCTION_NUM_ARGS)
+#define BOOST_FUNCTION_GET_INVOKER \
+ BOOST_JOIN(get_invoker,BOOST_FUNCTION_NUM_ARGS)
#define BOOST_FUNCTION_VTABLE BOOST_JOIN(basic_vtable,BOOST_FUNCTION_NUM_ARGS)
#ifndef BOOST_NO_VOID_RETURNS
@@ -70,16 +83,6 @@
# define BOOST_FUNCTION_RETURN(X) X; return BOOST_FUNCTION_VOID_RETURN_TYPE ()
#endif
-#ifdef BOOST_MSVC
-# pragma warning(push)
-# pragma warning(disable: 4127) // conditional expression is constant.
-#endif
-
-#ifdef BOOST_MSVC
-# pragma warning(push)
-# pragma warning(disable: 4127) // conditional expression is constant.
-#endif
-
namespace boost {
namespace detail {
namespace function {
@@ -191,6 +194,44 @@
}
};
+#if BOOST_FUNCTION_NUM_ARGS > 0
+ /* Handle invocation of member pointers. */
+ template<
+ typename MemberPtr,
+ typename R BOOST_FUNCTION_COMMA
+ BOOST_FUNCTION_TEMPLATE_PARMS
+ >
+ struct BOOST_FUNCTION_MEMBER_INVOKER
+ {
+ static R invoke(function_buffer& function_obj_ptr BOOST_FUNCTION_COMMA
+ BOOST_FUNCTION_PARMS)
+
+ {
+ MemberPtr* f =
+ reinterpret_cast<MemberPtr*>(&function_obj_ptr.data);
+ return boost::mem_fn(*f)(BOOST_FUNCTION_ARGS);
+ }
+ };
+
+ template<
+ typename MemberPtr,
+ typename R BOOST_FUNCTION_COMMA
+ BOOST_FUNCTION_TEMPLATE_PARMS
+ >
+ struct BOOST_FUNCTION_VOID_MEMBER_INVOKER
+ {
+ static BOOST_FUNCTION_VOID_RETURN_TYPE
+ invoke(function_buffer& function_obj_ptr BOOST_FUNCTION_COMMA
+ BOOST_FUNCTION_PARMS)
+
+ {
+ MemberPtr* f =
+ reinterpret_cast<MemberPtr*>(&function_obj_ptr.data);
+ BOOST_FUNCTION_RETURN(boost::mem_fn(*f)(BOOST_FUNCTION_ARGS));
+ }
+ };
+#endif
+
template<
typename FunctionPtr,
typename R BOOST_FUNCTION_COMMA
@@ -254,12 +295,130 @@
>::type type;
};
+#if BOOST_FUNCTION_NUM_ARGS > 0
+ /* Retrieve the appropriate invoker for a member pointer. */
+ template<
+ typename MemberPtr,
+ typename R BOOST_FUNCTION_COMMA
+ BOOST_FUNCTION_TEMPLATE_PARMS
+ >
+ struct BOOST_FUNCTION_GET_MEMBER_INVOKER
+ {
+ typedef typename mpl::if_c<(is_void<R>::value),
+ BOOST_FUNCTION_VOID_MEMBER_INVOKER<
+ MemberPtr,
+ R BOOST_FUNCTION_COMMA
+ BOOST_FUNCTION_TEMPLATE_ARGS
+ >,
+ BOOST_FUNCTION_MEMBER_INVOKER<
+ MemberPtr,
+ R BOOST_FUNCTION_COMMA
+ BOOST_FUNCTION_TEMPLATE_ARGS
+ >
+ >::type type;
+ };
+#endif
+
+ /* Given the tag returned by get_function_tag, retrieve the
+ actual invoker that will be used for the given function
+ object.
+
+ Each specialization contains an "apply" nested class template
+ that accepts the function object, return type, function
+ argument types, and allocator. The resulting "apply" class
+ contains two typedefs, "invoker_type" and "manager_type",
+ which correspond to the invoker and manager types. */
+ template<typename Tag>
+ struct BOOST_FUNCTION_GET_INVOKER { };
+
+ /* Retrieve the invoker for a function pointer. */
+ template<>
+ struct BOOST_FUNCTION_GET_INVOKER<function_ptr_tag>
+ {
+ template<typename FunctionPtr,
+ typename R BOOST_FUNCTION_COMMA BOOST_FUNCTION_TEMPLATE_PARMS,
+ typename Allocator>
+ struct apply
+ {
+ typedef typename BOOST_FUNCTION_GET_FUNCTION_INVOKER<
+ FunctionPtr,
+ R BOOST_FUNCTION_COMMA
+ BOOST_FUNCTION_TEMPLATE_ARGS
+ >::type
+ invoker_type;
+
+ typedef functor_manager<FunctionPtr, Allocator> manager_type;
+ };
+ };
+
+#if BOOST_FUNCTION_NUM_ARGS > 0
+ /* Retrieve the invoker for a member pointer. */
+ template<>
+ struct BOOST_FUNCTION_GET_INVOKER<member_ptr_tag>
+ {
+ template<typename MemberPtr,
+ typename R BOOST_FUNCTION_COMMA BOOST_FUNCTION_TEMPLATE_PARMS,
+ typename Allocator>
+ struct apply
+ {
+ typedef typename BOOST_FUNCTION_GET_MEMBER_INVOKER<
+ MemberPtr,
+ R BOOST_FUNCTION_COMMA
+ BOOST_FUNCTION_TEMPLATE_ARGS
+ >::type
+ invoker_type;
+
+ typedef functor_manager<MemberPtr, Allocator> manager_type;
+ };
+ };
+#endif
+
+ /* Retrieve the invoker for a function object. */
+ template<>
+ struct BOOST_FUNCTION_GET_INVOKER<function_obj_tag>
+ {
+ template<typename FunctionObj,
+ typename R BOOST_FUNCTION_COMMA BOOST_FUNCTION_TEMPLATE_PARMS,
+ typename Allocator>
+ struct apply
+ {
+ typedef typename BOOST_FUNCTION_GET_FUNCTION_OBJ_INVOKER<
+ FunctionObj,
+ R BOOST_FUNCTION_COMMA
+ BOOST_FUNCTION_TEMPLATE_ARGS
+ >::type
+ invoker_type;
+
+ typedef functor_manager<FunctionObj, Allocator> manager_type;
+ };
+ };
+
+ /* Retrieve the invoker for a reference to a function object. */
+ template<>
+ struct BOOST_FUNCTION_GET_INVOKER<function_obj_ref_tag>
+ {
+ template<typename RefWrapper,
+ typename R BOOST_FUNCTION_COMMA BOOST_FUNCTION_TEMPLATE_PARMS,
+ typename Allocator>
+ struct apply
+ {
+ typedef typename BOOST_FUNCTION_GET_FUNCTION_REF_INVOKER<
+ typename RefWrapper::type,
+ R BOOST_FUNCTION_COMMA
+ BOOST_FUNCTION_TEMPLATE_ARGS
+ >::type
+ invoker_type;
+
+ typedef reference_manager<typename RefWrapper::type> manager_type;
+ };
+ };
+
/**
* vtable for a specific boost::function instance.
*/
template<typename R BOOST_FUNCTION_COMMA BOOST_FUNCTION_TEMPLATE_PARMS,
typename Allocator>
- struct BOOST_FUNCTION_VTABLE : vtable_base
+ struct BOOST_FUNCTION_VTABLE
{
#ifndef BOOST_NO_VOID_RETURNS
typedef R result_type;
@@ -272,50 +431,25 @@
BOOST_FUNCTION_TEMPLATE_ARGS);
template<typename F>
- BOOST_FUNCTION_VTABLE(F f) : vtable_base(), invoker(0)
- {
- init(f);
- }
-
- template<typename F>
- bool assign_to(F f, function_buffer& functor)
+ bool assign_to(const F& f, function_buffer& functor) const
{
typedef typename get_function_tag<F>::type tag;
return assign_to(f, functor, tag());
}
- void clear(function_buffer& functor)
+ void clear(function_buffer& functor) const
{
- if (manager)
- manager(functor, functor, destroy_functor_tag);
+ if (base.manager)
+ base.manager(functor, functor, destroy_functor_tag);
}
-
+#ifndef BOOST_NO_PRIVATE_IN_AGGREGATE
private:
- template<typename F>
- void init(F f)
- {
- typedef typename get_function_tag<F>::type tag;
- init(f, tag());
- }
-
+#endif
// Function pointers
template<typename FunctionPtr>
- void init(FunctionPtr /*f*/, function_ptr_tag)
- {
- typedef typename BOOST_FUNCTION_GET_FUNCTION_INVOKER<
- FunctionPtr,
- R BOOST_FUNCTION_COMMA
- BOOST_FUNCTION_TEMPLATE_ARGS
- >::type
- actual_invoker_type;
-
- invoker = &actual_invoker_type::invoke;
- manager = &functor_manager<FunctionPtr, Allocator>::manage;
- }
-
- template<typename FunctionPtr>
bool
- assign_to(FunctionPtr f, function_buffer& functor, function_ptr_tag)
+ assign_to(FunctionPtr f, function_buffer& functor,
+ function_ptr_tag) const
{
this->clear(functor);
if (f) {
@@ -331,22 +465,13 @@
// Member pointers
#if BOOST_FUNCTION_NUM_ARGS > 0
template<typename MemberPtr>
- void init(MemberPtr f, member_ptr_tag)
- {
- // DPG TBD: Add explicit support for member function
- // objects, so we invoke through mem_fn() but we retain the
- // right target_type() values.
- this->init(mem_fn(f));
- }
-
- template<typename MemberPtr>
- bool assign_to(MemberPtr f, function_buffer& functor, member_ptr_tag)
+ bool
+ assign_to(MemberPtr f, function_buffer& functor, member_ptr_tag) const
{
- // DPG TBD: Add explicit support for member function
- // objects, so we invoke through mem_fn() but we retain the
- // right target_type() values.
if (f) {
- this->assign_to(mem_fn(f), functor);
+ // Always use the small-object optimization for member
+ // pointers.
+ assign_functor(f, functor, mpl::true_());
return true;
} else {
return false;
@@ -355,24 +480,11 @@
#endif // BOOST_FUNCTION_NUM_ARGS > 0
// Function objects
- template<typename FunctionObj>
- void init(FunctionObj /*f*/, function_obj_tag)
- {
- typedef typename BOOST_FUNCTION_GET_FUNCTION_OBJ_INVOKER<
- FunctionObj,
- R BOOST_FUNCTION_COMMA
- BOOST_FUNCTION_TEMPLATE_ARGS
- >::type
- actual_invoker_type;
-
- invoker = &actual_invoker_type::invoke;
- manager = &functor_manager<FunctionObj, Allocator>::manage;
- }
-
// Assign to a function object using the small object optimization
template<typename FunctionObj>
void
- assign_functor(FunctionObj f, function_buffer& functor, mpl::true_)
+ assign_functor(const FunctionObj& f, function_buffer& functor,
+ mpl::true_) const
{
new ((void*)&functor.data) FunctionObj(f);
}
@@ -380,7 +492,8 @@
// Assign to a function object allocated on the heap.
template<typename FunctionObj>
void
- assign_functor(FunctionObj f, function_buffer& functor, mpl::false_)
+ assign_functor(const FunctionObj& f, function_buffer& functor,
+ mpl::false_) const
{
#ifndef BOOST_NO_STD_ALLOCATOR
typedef typename Allocator::template rebind<FunctionObj>::other
@@ -400,7 +513,8 @@
template<typename FunctionObj>
bool
- assign_to(FunctionObj f, function_buffer& functor, function_obj_tag)
+ assign_to(const FunctionObj& f, function_buffer& functor,
+ function_obj_tag) const
{
if (!boost::detail::function::has_empty_target(boost::addressof(f))) {
assign_functor(f, functor,
@@ -413,24 +527,9 @@
// Reference to a function object
template<typename FunctionObj>
- void
- init(const reference_wrapper<FunctionObj>& /*f*/, function_obj_ref_tag)
- {
- typedef typename BOOST_FUNCTION_GET_FUNCTION_REF_INVOKER<
- FunctionObj,
- R BOOST_FUNCTION_COMMA
- BOOST_FUNCTION_TEMPLATE_ARGS
- >::type
- actual_invoker_type;
-
- invoker = &actual_invoker_type::invoke;
- manager = &reference_manager<FunctionObj>::get;
- }
-
- template<typename FunctionObj>
bool
assign_to(const reference_wrapper<FunctionObj>& f,
- function_buffer& functor, function_obj_ref_tag)
+ function_buffer& functor, function_obj_ref_tag) const
{
if (!boost::detail::function::has_empty_target(f.get_pointer())) {
// DPG TBD: We might need to detect constness of
@@ -445,6 +544,7 @@
}
public:
+ vtable_base base;
invoker_type invoker;
};
} // end namespace function
@@ -456,6 +556,17 @@
typename Allocator = BOOST_FUNCTION_DEFAULT_ALLOCATOR
>
class BOOST_FUNCTION_FUNCTION : public function_base
+
+#if BOOST_FUNCTION_NUM_ARGS == 1
+
+ , public std::unary_function<T0,R>
+
+#elif BOOST_FUNCTION_NUM_ARGS == 2
+
+ , public std::binary_function<T0,T1,R>
+
+#endif
+
{
public:
#ifndef BOOST_NO_VOID_RETURNS
@@ -537,7 +648,7 @@
if (this->empty())
boost::throw_exception(bad_function_call());
- return static_cast<vtable_type*>(vtable)->invoker
+ return reinterpret_cast<const vtable_type*>(vtable)->invoker
(this->functor BOOST_FUNCTION_COMMA BOOST_FUNCTION_ARGS);
}
#else
@@ -561,12 +672,16 @@
operator=(Functor BOOST_FUNCTION_TARGET_FIX(const &) f)
{
this->clear();
+#ifndef BOOST_NO_EXCEPTIONS
try {
this->assign_to(f);
} catch (...) {
vtable = 0;
throw;
}
+#else
+ this->assign_to(f);
+#endif
return *this;
}
@@ -592,12 +707,16 @@
return *this;
this->clear();
+#ifndef BOOST_NO_EXCEPTIONS
try {
this->assign_to_own(f);
} catch (...) {
vtable = 0;
throw;
}
+#else
+ this->assign_to_own(f);
+#endif
return *this;
}
@@ -615,7 +734,7 @@
void clear()
{
if (vtable) {
- static_cast<vtable_type*>(vtable)->clear(this->functor);
+ reinterpret_cast<const vtable_type*>(vtable)->clear(this->functor);
vtable = 0;
}
}
@@ -650,10 +769,24 @@
}
template<typename Functor>
- void assign_to(Functor f)
+ void assign_to(const Functor& f)
{
- static vtable_type stored_vtable(f);
- if (stored_vtable.assign_to(f, functor)) vtable = &stored_vtable;
+ using detail::function::vtable_base;
+
+ typedef typename detail::function::get_function_tag<Functor>::type tag;
+ typedef detail::function::BOOST_FUNCTION_GET_INVOKER<tag> get_invoker;
+ typedef typename get_invoker::
+ template apply<Functor, R BOOST_FUNCTION_COMMA
+ BOOST_FUNCTION_TEMPLATE_ARGS, Allocator>
+ handler_type;
+
+ typedef typename handler_type::invoker_type invoker_type;
+ typedef typename handler_type::manager_type manager_type;
+
+ static const vtable_type stored_vtable =
+ { { &manager_type::manage }, &invoker_type::invoke };
+
+ if (stored_vtable.assign_to(f, functor)) vtable = &stored_vtable.base;
else vtable = 0;
}
};
@@ -688,7 +821,7 @@
if (this->empty())
boost::throw_exception(bad_function_call());
- return static_cast<vtable_type*>(vtable)->invoker
+ return reinterpret_cast<const vtable_type*>(vtable)->invoker
(this->functor BOOST_FUNCTION_COMMA BOOST_FUNCTION_ARGS);
}
#endif
@@ -798,21 +931,14 @@
}
};
-#ifdef BOOST_MSVC
-# pragma warning(pop)
-#endif
-
#undef BOOST_FUNCTION_PARTIAL_SPEC
#endif // have partial specialization
} // end namespace boost
-#ifdef BOOST_MSVC
-# pragma warning(pop)
-#endif
-
// Cleanup after ourselves...
#undef BOOST_FUNCTION_VTABLE
+#undef BOOST_FUNCTION_GET_INVOKER
#undef BOOST_FUNCTION_DEFAULT_ALLOCATOR
#undef BOOST_FUNCTION_COMMA
#undef BOOST_FUNCTION_FUNCTION
@@ -822,10 +948,12 @@
#undef BOOST_FUNCTION_VOID_FUNCTION_OBJ_INVOKER
#undef BOOST_FUNCTION_FUNCTION_REF_INVOKER
#undef BOOST_FUNCTION_VOID_FUNCTION_REF_INVOKER
+#undef BOOST_FUNCTION_MEMBER_INVOKER
+#undef BOOST_FUNCTION_VOID_MEMBER_INVOKER
#undef BOOST_FUNCTION_GET_FUNCTION_INVOKER
#undef BOOST_FUNCTION_GET_FUNCTION_OBJ_INVOKER
#undef BOOST_FUNCTION_GET_FUNCTION_REF_INVOKER
-#undef BOOST_FUNCTION_GET_MEM_FUNCTION_INVOKER
+#undef BOOST_FUNCTION_GET_MEMBER_INVOKER
#undef BOOST_FUNCTION_TEMPLATE_PARMS
#undef BOOST_FUNCTION_TEMPLATE_ARGS
#undef BOOST_FUNCTION_PARMS
@@ -835,3 +963,7 @@
#undef BOOST_FUNCTION_ARG_TYPES
#undef BOOST_FUNCTION_VOID_RETURN_TYPE
#undef BOOST_FUNCTION_RETURN
+
+#if defined(BOOST_MSVC)
+# pragma warning( pop )
+#endif

46
boost-CVE-2008-0171.patch Normal file
View File

@ -0,0 +1,46 @@
--- boost/regex/v4/basic_regex_parser.hpp (revision 38864)
+++ boost/regex/v4/basic_regex_parser.hpp (revision 42674)
@@ -785,4 +785,5 @@
case syntax_element_jump:
case syntax_element_startmark:
+ case syntax_element_backstep:
// can't legally repeat any of the above:
fail(regex_constants::error_badrepeat, m_position - m_base);
@@ -1870,4 +1871,5 @@
{
re_syntax_base* b = this->getaddress(expected_alt_point);
+ // Make sure we have exactly one alternative following this state:
if(b->type != syntax_element_alt)
{
@@ -1878,4 +1880,13 @@
{
fail(regex_constants::error_bad_pattern, m_position - m_base);
+ return false;
+ }
+ // check for invalid repetition of next state:
+ b = this->getaddress(expected_alt_point);
+ b = this->getaddress(static_cast<re_alt*>(b)->next.i, b);
+ if((b->type != syntax_element_assert_backref)
+ && (b->type != syntax_element_startmark))
+ {
+ fail(regex_constants::error_badrepeat, m_position - m_base);
return false;
}
--- libs/regex/test/regress/test_perl_ex.cpp (revision 30980)
+++ libs/regex/test/regress/test_perl_ex.cpp (revision 42674)
@@ -122,4 +122,15 @@
TEST_INVALID_REGEX("(?:(a)|b)(?(?<", perl);
TEST_INVALID_REGEX("(?:(a)|b)(?(?<a", perl);
+
+ TEST_INVALID_REGEX("(?(?!#?)+)", perl);
+ TEST_INVALID_REGEX("(?(?=:-){0})", perl);
+ TEST_INVALID_REGEX("(?(123){1})", perl);
+ TEST_INVALID_REGEX("(?(?<=A)*)", perl);
+ TEST_INVALID_REGEX("(?(?<=A)+)", perl);
+
+ TEST_INVALID_REGEX("(?<!*|^)", perl);
+ TEST_INVALID_REGEX("(?<!*|A)", perl);
+ TEST_INVALID_REGEX("(?<=?|A)", perl);
+ TEST_INVALID_REGEX("(?<=*|\\B)", perl);
}

View File

@ -1,11 +0,0 @@
--- boost/detail/atomic_count_gcc.hpp
+++ boost/detail/atomic_count_gcc.hpp
@@ -17,7 +17,7 @@
// http://www.boost.org/LICENSE_1_0.txt)
//
-#include <bits/atomicity.h>
+#include <ext/atomicity.h>
namespace boost
{

43
boost-codecleanup.patch Normal file
View File

@ -0,0 +1,43 @@
--- boost/archive/iterators/base64_from_binary.hpp
+++ boost/archive/iterators/base64_from_binary.hpp
@@ -43,7 +43,7 @@
"0123456789"
"+/";
assert(t < 64);
- return lookup_table[t];
+ return lookup_table[int(t)];
}
};
--- boost/token_functions.hpp
+++ boost/token_functions.hpp
@@ -335,11 +335,12 @@
if (next == end)
return false;
- if (current_offset_ == offsets_.size())
+ if (current_offset_ == offsets_.size()) {
if (wrap_offsets_)
current_offset_=0;
else
return false;
+ }
int c = offsets_[current_offset_];
int i = 0;
@@ -448,13 +449,14 @@
else { // m_empty_tokens == keep_empty_tokens
// Handle empty token at the end
- if (next == end)
+ if (next == end) {
if (m_output_done == false) {
m_output_done = true;
assigner::assign(start,next,tok);
return true;
} else
return false;
+ }
if (is_kept(*next)) {
if (m_output_done == false)

View File

@ -1,81 +0,0 @@
--- Makefile.in
+++ Makefile.in
@@ -0,0 +1,32 @@
+BJAM=@BJAM@
+TOOLSET=@TOOLSET@
+BJAM_FLAGS=
+BJAM_CONFIG=@BJAM_CONFIG@
+PREFIX=@PREFIX@
+EPREFIX=@EPREFIX@
+LIBDIR=@LIBDIR@
+INCLUDEDIR=@INCLUDEDIR@
+LIBS=@LIBS@
+GXX=c++
+GCC=c++
+DESTDIR=
+
+all: .dummy
+ $(BJAM) $(BJAM_FLAGS) $(BJAM_CONFIG) -sGXX="$(GXX)" -sGCC="$(GCC)" -sTOOLS="$(TOOLSET)" -sBUILD="release <threading>single/multiple" $(LIBS) || \
+ echo "Not all Boost libraries built properly."
+
+clean: .dummy
+ rm -rf bin
+
+distclean: clean
+ rm -rf Makefile config.log
+
+check: .dummy
+ @cd status && ../$(BJAM) $(BJAM_CONFIG) -sTOOLS=$(TOOLSET) test || echo "Some Boost regression tests failed. This is normal."
+
+install: .dummy
+ $(BJAM) $(BJAM_FLAGS) $(BJAM_CONFIG) -sGXX="$(GXX)" -sGCC="$(GCC)" --prefix=$(DESTDIR)$(PREFIX) \
+ --exec-prefix=$(DESTDIR)$(EPREFIX) --libdir=$(DESTDIR)$(LIBDIR) --includedir=$(DESTDIR)$(INCLUDEDIR) \
+ -sTOOLS=$(TOOLSET) -sBUILD="release <threading>single/multiple" $(LIBS) install || echo "Not all Boost libraries built properly."
+
+.dummy:
--- configure
+++ configure
@@ -277,34 +277,12 @@
# Generate the Makefile
echo "Generating Makefile..."
-cat > Makefile <<EOF
-BJAM=$BJAM
-TOOLSET=$TOOLSET
-BJAM_CONFIG=$BJAM_CONFIG
-PREFIX=$PREFIX
-EPREFIX=$EPREFIX
-LIBDIR=$LIBDIR
-INCLUDEDIR=$INCLUDEDIR
-LIBS=$LIBS
-
-all: .dummy
- @echo "\$(BJAM) \$(BJAM_CONFIG) -sTOOLS=\$(TOOLSET) \$(LIBS)"
- @\$(BJAM) \$(BJAM_CONFIG) -sTOOLS=\$(TOOLSET) \$(LIBS) || \\
- echo "Not all Boost libraries built properly."
-
-clean: .dummy
- rm -rf bin
-
-distclean: clean
- rm -rf Makefile config.log
-
-check: .dummy
- @cd status && ../\$(BJAM) \$(BJAM_CONFIG) -sTOOLS=\$(TOOLSET) test || echo "Some Boost regression tests failed. This is normal."
-
-install: .dummy
- @echo "\$(BJAM) \$(BJAM_CONFIG) --prefix=\$(PREFIX) --exec-prefix=\$(EPREFIX) --libdir=\$(LIBDIR) --includedir=\$(INCLUDEDIR) -sTOOLS=\$(TOOLSET) \$(LIBS) install"
- @\$(BJAM) \$(BJAM_CONFIG) --prefix=\$(PREFIX) --exec-prefix=\$(EPREFIX) --libdir=\$(LIBDIR) --includedir=\$(INCLUDEDIR) -sTOOLS=\$(TOOLSET) \$(LIBS) install || echo "Not all Boost libraries built properly."
-
-.dummy:
-
-EOF
+sed -e "s!@BJAM@!$BJAM!g" \
+ -e "s!@TOOLSET@!$TOOLSET!g" \
+ -e "s!@BJAM_CONFIG@!$BJAM_CONFIG!g" \
+ -e "s!@PREFIX@!$PREFIX!" \
+ -e "s!@EPREFIX@!$EPREFIX!g" \
+ -e "s!@LIBDIR@!$LIBDIR!g" \
+ -e "s!@INCLUDEDIR@!$INCLUDEDIR!g" \
+ -e "s!@LIBS@!$LIBS!g" \
+ Makefile.in >Makefile

154
boost-fix_doc_url.patch Normal file
View File

@ -0,0 +1,154 @@
--- libs/filesystem/doc/tr2_proposal.html
+++ libs/filesystem/doc/tr2_proposal.html
@@ -2512,7 +2512,7 @@
processor! Although these semantics are often useful, they are also very
error-prone.</p>
<p>See
- <a href="file:///C|/boost/site/libs/filesystem/doc/operations.htm#complete_note">
+ <a href="file://operations.htm#complete_note">
<i>complete()</i> note</a> for usage suggestions. <i>-- end note</i>]</p>
</blockquote>
<pre>errno_type <a name="to_errno">to_errno</a>( system_error_type code );</pre>
--- libs/test/doc/components/prg_exec_monitor/compilation.html
+++ libs/test/doc/components/prg_exec_monitor/compilation.html
@@ -42,13 +42,13 @@
that is built on top of bjam tool. All make systems require some kind of
configuration file that list all files that constitute the library and all
the build options. For example makefile that is used by make, Microsoft Visual
- Studio project file, Jamfile that is used by Boost.Build. For the sake of
+ Studio project file, Jamfile.v2 that is used by Boost.Build. For the sake of
simplicity lets call this file the makefile. To build a stanalone library
following files, that are located in the Boost Test Library source directory,
needs to be listed as source files in your makefile:</P>
<P class="indented"><A href="../../../src/execution_monitor.cpp">execution_monitor.cpp</A><BR>
<A href="../../../src/cpp_main.cpp">cpp_main.cpp</A></P>
- <P class="first-line-indented">The <A href="../../../build/Jamfile">Jamfile</A> for
+ <P class="first-line-indented">The <A href="../../../build/Jamfile.v2">Jamfile.v2</A> for
use with Boost.Build system is supplied in libs/test/build directory. </P>
<H5>Building static library<A name="static_build"></A></H5>
<P class="first-line-indented">There are no additional build defines or options
--- libs/test/doc/components/utf/compilation.html
+++ libs/test/doc/components/utf/compilation.html
@@ -64,7 +64,7 @@
<A href="../../../src/unit_test_suite.cpp">unit_test_suite.cpp</A><BR>
<A href="../../../src/xml_log_formatter.cpp">xml_log_formatter.cpp</A><BR>
<A href="../../../src/xml_report_formatter.cpp">xml_report_formatter.cpp</A></P>
- <P class="first-line-indented">The <A href="../../../build/Jamfile">Jamfile</A> for
+ <P class="first-line-indented">The <A href="../../../build/Jamfile.v2">Jamfile.v2</A> for
use with Boost.Build system is supplied in libs/test/build directory. </P>
<H5>Building static library<A name="static_build"></A></H5>
<P class="first-line-indented">There are no additional build defines or options
--- libs/test/doc/examples/unit_test_example1.html
+++ libs/test/doc/examples/unit_test_example1.html
@@ -31,13 +31,14 @@
<TR>
<TD class="title" valign="top">Output:</TD>
<TD><SPAN class="test-output">Running 1 test case...<BR>
- .../unit_test_example1.cpp(17): error in &quot;free_test_function&quot;: test 2 == 1 failed<BR>
+ .../unit_test_example_01.cpp(17): error in &quot;free_test_function&quot;: test 2 == 1 failed<BR>
<BR>
*** No errors detected </SPAN> </TD>
</TR>
<TR>
<TD class="title" valign="top">Source:</TD>
- <TD><A href="../../example/unit_test_example1.cpp">unit_test_example1.cpp</A></TD>
+ <TD><A
+ href="../../example/unit_test_example_01.cpp">unit_test_example_01.cpp</A></TD>
</TR>
</TABLE>
</DIV>
--- libs/test/doc/examples/unit_test_example2.html
+++ libs/test/doc/examples/unit_test_example2.html
@@ -34,13 +34,14 @@
it will look like this:<BR>
<SPAN class="test-output">Running 2 test case...<BR>
Exception in &quot;force_division_by_zero&quot;: integer divide by zero<BR>
- .../unit_test_example2.cpp(16) : last checkpoint: About to force division by zero!<BR>
+ .../unit_test_example_02.cpp(16) : last checkpoint: About to force division by zero!<BR>
<BR>
*** errors detected in test suite &quot;Unit test example 2&quot;; see standard output for details </SPAN> </TD>
</TR>
<TR>
<TD class="title" valign="top">Source:</TD>
- <TD><A href="../../example/unit_test_example2.cpp">unit_test_example2.cpp</A></TD>
+ <TD><A
+ href="../../example/unit_test_example_02.cpp">unit_test_example_02.cpp</A></TD>
</TR>
</TABLE>
</DIV>
--- libs/test/doc/examples/unit_test_example3.html
+++ libs/test/doc/examples/unit_test_example3.html
@@ -34,18 +34,18 @@
<TD class="title" valign="top">Output:</TD>
<TD>With the input described above the output looks like:<BR>
<SPAN class="test-output">Running 3 test case...<BR>
- .../unit_test_example3.cpp(63): error in &quot;account_test::test_init&quot;: test m_account.balance() ==
+ .../unit_test_example_03.cpp(63): error in &quot;account_test::test_init&quot;: test m_account.balance() ==
5.0 failed [10 != 5]<BR>
Enter deposit value:<BR>
5<BR>
- .../unit_test_example3.cpp(87): fatal error in &quot;account_test::test_deposit&quot;:
+ .../unit_test_example_03.cpp(87): fatal error in &quot;account_test::test_deposit&quot;:
test m_account.balance() &gt;= 100.0 failed<BR>
<BR>
*** 2 failures detected (5 failures expected) in test suite &quot;Unit test example 3&quot; </SPAN> </TD>
</TR>
<TR>
<TD class="title" valign="top">Source:</TD>
- <TD><A href="../../example/unit_test_example3.cpp">unit_test_example3.cpp</A></TD>
+ <TD><A href="../../example/unit_test_example_03.cpp">unit_test_example_03.cpp</A></TD>
</TR>
</TABLE>
</DIV>
--- libs/test/doc/examples/unit_test_example4.html
+++ libs/test/doc/examples/unit_test_example4.html
@@ -27,14 +27,14 @@
<TD>The output depends on whether or not your system support setting test case timeout. For Win32
it will look like this:<BR>
<SPAN class="test-output">Running 1 test case...<BR>
- .../unit_test_example4.cpp(20): error in &quot;check_string&quot;: test s.substr( 0, 3 ) == &quot;hdr&quot; failed
+ .../unit_test_example_04.cpp(20): error in &quot;check_string&quot;: test s.substr( 0, 3 ) == &quot;hdr&quot; failed
[3 != hdr]<BR>
<BR>
*** No errors detected </SPAN> </TD>
</TR>
<TR>
<TD class="title" valign="top">Source:</TD>
- <TD><A href="../../example/unit_test_example4.cpp">unit_test_example4.cpp</A></TD>
+ <TD><A href="../../example/unit_test_example_04.cpp">unit_test_example_04.cpp</A></TD>
</TR>
</TABLE>
</DIV>
--- libs/test/doc/examples/unit_test_example5.html
+++ libs/test/doc/examples/unit_test_example5.html
@@ -52,7 +52,7 @@
</TR>
<TR>
<TD class="title" valign="top">Source:</TD>
- <TD><A href="../../example/unit_test_example5.cpp">unit_test_example5.cpp</A></TD>
+ <TD><A href="../../example/unit_test_example_05.cpp">unit_test_example_05.cpp</A></TD>
</TR>
</TABLE>
</DIV>
--- libs/test/doc/tutorials/hello_the_testing_world.html
+++ libs/test/doc/tutorials/hello_the_testing_world.html
@@ -134,7 +134,7 @@
<P> &copy; <A name="Copyright">Copyright</A> <A href='mailto:boost-test at emailaccount dot com (please unobscure)'>Gennadiy
Rozental</A> 2001-2006. <BR>
Distributed under the Boost Software License, Version 1.0. (See accompanying
- file <A href="../../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</A> or copy
+ file <A href="../../../../LICENSE_1_0.txt">LICENSE_1_0.txt</A> or copy
at <A href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</A>)</P>
<P>Revised:
<!-- #BeginDate format:Sw1 -->28 February, 2006<!-- #EndDate -->
--- more/count_bdy.htm
+++ more/count_bdy.htm
@@ -753,7 +753,7 @@
<div align="right">
<hr width="100%">
<font size="-1"><i>First published in</i> <a href=
- "http://www.accu.org/c++sig/public/Overload.html">Overload</a> <i>25,
+ "http://www.accu.org/index.php/overloadonline"</a> <i>25,
April 1998, ISSN 1354-3172</i></font>
</div>

View File

@ -0,0 +1,11 @@
--- libs/bind/bind.html
+++ libs/bind/bind.html
@@ -341,7 +341,7 @@
{
public:
- <A href="../function/index.html" >boost::function</A>&lt;void&gt; onClick;
+ <A href="../function/index.html" >boost::function</A>&lt;void()&gt; onClick;
};
class player

View File

@ -1,29 +0,0 @@
--- boost/detail/sp_counted_base_gcc_ia64.hpp
+++ boost/detail/sp_counted_base_gcc_ia64.hpp
@@ -34,7 +34,7 @@
// release barrier associated with it. We choose release as it should be
// cheaper.
__asm__ ("fetchadd8.rel %0=[%2],1" :
- "=r"(tmp), "=m"(*pw) :
+ "=r"(tmp), "+m"(*pw) :
"r"(pw));
}
@@ -47,7 +47,7 @@
__asm__ (" fetchadd8.rel %0=[%2],-1 ;; \n"
" cmp.eq p7,p0=1,%0 ;; \n"
"(p7) ld8.acq %0=[%2] " :
- "=&r"(rv), "=m"(*pw) :
+ "=&r"(rv), "+m"(*pw) :
"r"(pw) :
"p7");
@@ -71,7 +71,7 @@
"(p7) br.cond.spnt 0b \n"
" mov %0=%1 ;; \n"
"1:" :
- "=&r"(rv), "=&r"(tmp), "=&r"(tmp2), "=m"(*pw) :
+ "=&r"(rv), "=&r"(tmp), "=&r"(tmp2), "+m"(*pw) :
"r"(pw) :
"ar.ccv", "p7");

View File

@ -0,0 +1,118 @@
--- boost/regex/v4/basic_regex.hpp
+++ boost/regex/v4/basic_regex.hpp
@@ -23,6 +23,8 @@
# include BOOST_ABI_PREFIX
#endif
+#include <climits> // For CHAR_BIT ant UINT_MAX
+
namespace boost{
#ifdef BOOST_MSVC
#pragma warning(push)
--- boost/regex/v4/basic_regex_creator.hpp
+++ boost/regex/v4/basic_regex_creator.hpp
@@ -24,6 +24,8 @@
# include BOOST_ABI_PREFIX
#endif
+#include <climits> // For CHAR_BIT and UINT_MAX
+
namespace boost{
namespace re_detail{
--- boost/regex/v4/basic_regex_parser.hpp
+++ boost/regex/v4/basic_regex_parser.hpp
@@ -23,6 +23,8 @@
# include BOOST_ABI_PREFIX
#endif
+#include <climits>
+
namespace boost{
namespace re_detail{
--- boost/regex/v4/cpp_regex_traits.hpp
+++ boost/regex/v4/cpp_regex_traits.hpp
@@ -41,6 +41,7 @@
#include <istream>
#include <ios>
+#include <climits>
#ifdef BOOST_HAS_ABI_HEADERS
# include BOOST_ABI_PREFIX
--- boost/regex/v4/perl_matcher.hpp
+++ boost/regex/v4/perl_matcher.hpp
@@ -18,6 +18,8 @@
# include BOOST_ABI_PREFIX
#endif
+#include <climits> // For CHAR_BIT
+
namespace boost{
namespace re_detail{
--- boost/regex/v4/regex_split.hpp
+++ boost/regex/v4/regex_split.hpp
@@ -21,6 +21,8 @@
#ifndef BOOST_REGEX_SPLIT_HPP
#define BOOST_REGEX_SPLIT_HPP
+#include <climits> // For UINT_MAX
+
namespace boost{
#ifdef BOOST_HAS_ABI_HEADERS
--- boost/regex/v4/states.hpp
+++ boost/regex/v4/states.hpp
@@ -23,6 +23,8 @@
# include BOOST_ABI_PREFIX
#endif
+#include <climits> // For CHAR_BIT
+
namespace boost{
namespace re_detail{
--- boost/spirit/phoenix/operators.hpp
+++ boost/spirit/phoenix/operators.hpp
@@ -20,6 +20,8 @@
#define CREF
#endif
+#include <climits> // for INT_MAX
+
#include <boost/spirit/phoenix/actor.hpp>
#include <boost/spirit/phoenix/composite.hpp>
#include <boost/config.hpp>
--- boost/test/test_tools.hpp
+++ boost/test/test_tools.hpp
@@ -45,6 +45,8 @@
#include <cstddef> // for std::size_t
#include <iosfwd>
+#include <climits> // For CHAR_BIT
+
#include <boost/test/detail/suppress_warnings.hpp>
//____________________________________________________________________________//
--- boost/wave/cpplexer/re2clex/cpp_re2c_lexer.hpp
+++ boost/wave/cpplexer/re2clex/cpp_re2c_lexer.hpp
@@ -16,6 +16,7 @@
#include <string>
#include <cstdio>
#include <cstdarg>
+#include <cstring>
#if defined(BOOST_SPIRIT_DEBUG)
#include <iostream>
#endif // defined(BOOST_SPIRIT_DEBUG)
--- boost/wave/util/flex_string.hpp
+++ boost/wave/util/flex_string.hpp
@@ -94,6 +94,7 @@
#include <limits>
#include <stdexcept>
#include <cstddef>
+#include <cstring>
// this must occur after all of the includes and before any code appears
#ifdef BOOST_HAS_ABI_HEADERS

View File

@ -0,0 +1,38 @@
--- boost/archive/polymorphic_iarchive.hpp
+++ boost/archive/polymorphic_iarchive.hpp
@@ -16,6 +16,7 @@
// See http://www.boost.org for updates, documentation, and revision history.
+#include <climits> // UINT_MAX
#include <cstddef> // std::size_t
#include <boost/config.hpp>
@@ -38,7 +39,7 @@
// if there is no 64 bit int or if its the same as a long
// we shouldn't define separate functions for int64 data types.
#if defined(BOOST_NO_INT64_T) \
- || (ULONG_MAX != 0xffffffff && ULONG_MAX == 18446744073709551615u) // 2**64 - 1
+ || (ULONG_MAX != 0xffffffffu /* 2^^32 -1 */ && ULONG_MAX == 0xffffffffffffffffu) // 2**64 - 1
# define BOOST_NO_INTRINSIC_INT64_T
#endif
--- boost/archive/polymorphic_oarchive.hpp
+++ boost/archive/polymorphic_oarchive.hpp
@@ -16,6 +16,7 @@
// See http://www.boost.org for updates, documentation, and revision history.
+#include <climits> // UINT_MAX
#include <cstddef> // size_t
#include <string>
@@ -37,7 +38,7 @@
// if there is no 64 bit int or if its the same as a long
// we shouldn't define separate functions for int64 data types.
#if defined(BOOST_NO_INT64_T) \
- || (ULONG_MAX != 0xffffffff && ULONG_MAX == 18446744073709551615u) // 2**64 - 1
+ || (ULONG_MAX != 0xffffffffu /* 2^^32 -1 */ && ULONG_MAX == 0xffffffffffffffffu) // 2**64 - 1
# define BOOST_NO_INTRINSIC_INT64_T
#endif

View File

@ -0,0 +1,11 @@
--- boost/iostreams/filter/regex.hpp
+++ boost/iostreams/filter/regex.hpp
@@ -57,7 +57,7 @@
return;
iterator first(&src[0], &src[0] + src.size(), re_, flags_);
iterator last;
- const Ch* suffix = 0; // Prevent GCC 2.95 warning.
+ const Ch* suffix = &src[0]; //suffix will be entire input if no match found
for (; first != last; ++first) {
dest.insert( dest.end(),
first->prefix().first,

View File

@ -0,0 +1,11 @@
--- libs/filesystem/src/operations.cpp
+++ libs/filesystem/src/operations.cpp
@@ -1209,7 +1209,7 @@
const std::string & dir, std::string & target,
file_status &, file_status & )
{
- static const std::string dummy_first_name( "." );
+ const std::string dummy_first_name( "." );
if ( (handle = ::opendir( dir.c_str() )) == 0 ) return errno;
target = dummy_first_name;
std::size_t path_size;

View File

@ -1,22 +0,0 @@
--- boost/python/detail/exception_handler.hpp
+++ boost/python/detail/exception_handler.hpp
@@ -11,7 +11,7 @@
namespace boost { namespace python { namespace detail {
-struct BOOST_PYTHON_DECL exception_handler;
+struct exception_handler;
typedef function2<bool, exception_handler const&, function0<void> const&> handler_function;
--- boost/python/detail/wrapper_base.hpp
+++ boost/python/detail/wrapper_base.hpp
@@ -14,7 +14,7 @@
namespace detail
{
- class BOOST_PYTHON_DECL wrapper_base;
+ class wrapper_base;
namespace wrapper_base_ // ADL disabler
{

View File

@ -14,7 +14,7 @@
dict_base::dict_base()
--- libs/python/src/list.cpp
+++ libs/python/src/list.cpp
@@ -9,10 +9,11 @@
@@ -10,10 +10,11 @@
detail::new_non_null_reference list_base::call(object const& arg_)
{
@ -66,7 +66,7 @@
: object(long_base::call(arg))
--- libs/python/src/object/class.cpp
+++ libs/python/src/object/class.cpp
@@ -538,9 +538,11 @@
@@ -566,9 +566,11 @@
void class_base::add_property(
char const* name, object const& fget, char const* docstr)
{
@ -79,7 +79,7 @@
this->setattr(name, property);
}
@@ -548,9 +550,11 @@
@@ -576,9 +578,11 @@
void class_base::add_property(
char const* name, object const& fget, object const& fset, char const* docstr)
{
@ -94,7 +94,7 @@
}
--- libs/python/src/str.cpp
+++ libs/python/src/str.cpp
@@ -8,9 +8,10 @@
@@ -9,9 +9,10 @@
detail::new_reference str_base::call(object const& arg_)
{

View File

@ -0,0 +1,32 @@
--- configure
+++ configure
@@ -9,7 +9,7 @@
BJAM=""
TOOLSET=""
-BJAM_CONFIG=""
+BJAM_CONFIG=${BJAM_CONFIG:-""}
BUILD=""
PREFIX=/usr/local
EPREFIX=
@@ -318,6 +318,7 @@
cat > Makefile <<EOF
BJAM=$BJAM
BJAM_CONFIG=$BJAM_CONFIG
+BJAM_TARGET=$BJAM_TARGET
PREFIX=$PREFIX
EPREFIX=$EPREFIX
LIBDIR=$LIBDIR
@@ -325,9 +326,9 @@
LIBS=$LIBS
all: .dummy
- @echo "\$(BJAM) \$(BJAM_CONFIG) --user-config=user-config.jam \$(LIBS)"
- @\$(BJAM) \$(BJAM_CONFIG) --user-config=user-config.jam \$(LIBS) || \\
- echo "Not all Boost libraries built properly."
+ @echo "\$(BJAM) \$(BJAM_CONFIG) --user-config=user-config.jam \$(LIBS) stage \$(BJAM_TARGET) "
+ @\$(BJAM) \$(BJAM_CONFIG) --user-config=user-config.jam \$(LIBS) stage \$(BJAM_TARGET) || \\
+ (echo "Not all Boost libraries built properly."; exit 1)
clean: .dummy
rm -rf bin.v2

View File

@ -1,37 +0,0 @@
--- boost/python/detail/wrap_python.hpp 4 Nov 2005 21:38:29 -0000 1.22
+++ boost/python/detail/wrap_python.hpp 12 Apr 2006 15:55:11 -0000
@@ -141,6 +141,12 @@
# include <Python.h>
#endif
+#if PY_VERSION_HEX < 0x02050000
+typedef int Py_ssize_t;
+#define PY_SSIZE_T_MIN INT_MIN
+#define PY_SSIZE_T_MAX INT_MAX
+#endif
+
#ifdef BOOST_PYTHON_ULONG_MAX_UNDEFINED
# undef ULONG_MAX
# undef BOOST_PYTHON_ULONG_MAX_UNDEFINED
diff -u -r1.7 object_protocol.cpp
--- libs/python/src/object_protocol.cpp 26 Jul 2004 00:32:11 -0000 1.7
+++ libs/python/src/object_protocol.cpp 12 Apr 2006 15:55:31 -0000
@@ -106,7 +106,7 @@
PySequenceMethods *sq = tp->tp_as_sequence;
if (sq && sq->sq_slice && ISINT(v) && ISINT(w)) {
- int ilow = 0, ihigh = INT_MAX;
+ Py_ssize_t ilow = 0, ihigh = PY_SSIZE_T_MAX;
if (!_PyEval_SliceIndex(v, &ilow))
return NULL;
if (!_PyEval_SliceIndex(w, &ihigh))
@@ -133,7 +133,7 @@
PySequenceMethods *sq = tp->tp_as_sequence;
if (sq && sq->sq_slice && ISINT(v) && ISINT(w)) {
- int ilow = 0, ihigh = INT_MAX;
+ Py_ssize_t ilow = 0, ihigh = PY_SSIZE_T_MAX;
if (!_PyEval_SliceIndex(v, &ilow))
return -1;
if (!_PyEval_SliceIndex(w, &ihigh))

13
boost-qualify_name.patch Normal file
View File

@ -0,0 +1,13 @@
Qualify special_values_parser to avoid later confusion.
--- boost/date_time/date_facet.hpp
+++ boost/date_time/date_facet.hpp
@@ -429,7 +429,7 @@
typedef std::basic_string<CharT> string_type;
typedef CharT char_type;
typedef boost::date_time::period_parser<date_type, CharT> period_parser_type;
- typedef special_values_parser<date_type,CharT> special_values_parser_type;
+ typedef boost::date_time::special_values_parser<date_type,CharT> special_values_parser_type;
typedef std::vector<std::basic_string<CharT> > input_collection_type;
typedef format_date_parser<date_type, CharT> format_date_parser_type;
// date_generators stuff goes here

7
boost-rpmlintrc Normal file
View File

@ -0,0 +1,7 @@
# This line is mandatory to access the configuration functions
from Config import *
addFilter("boost.* shlib-policy-nonversioned-dir")
addFilter("boost.* shlib-policy-missing-suffix")
addFilter("boost-doc.* devel-dependency")
addFilter("boost.* rpm-buildroot-usage")

View File

@ -1,10 +0,0 @@
--- tools/build/v1/gcc-tools.jam
+++ tools/build/v1/gcc-tools.jam
@@ -338,7 +338,6 @@
flags gcc HDRS <include> ;
flags gcc SYSHDRS <sysinclude> ;
flags gcc LINKFLAGS <linkflags> ;
-flags gcc LINKFLAGS <debug-symbols>off : -s ;
flags gcc ARFLAGS <arflags> ;
flags gcc STDHDRS : $(GCC_INCLUDE_DIRECTORY) ;

View File

@ -1,17 +1,6 @@
--- tools/build/v1/gcc-tools.jam
+++ tools/build/v1/gcc-tools.jam
@@ -150,7 +150,7 @@
}
case * :
{
- flags gcc CFLAGS <threading>multi : -pthread ;
+ flags gcc CFLAGS <threading>multi : -pthread -D_REENTRANT ;
flags gcc LINKFLAGS <threading>multi : -pthread ;
flags gcc FINDLIBS <threading>multi : rt ;
}
--- tools/build/v2/tools/gcc.jam
+++ tools/build/v2/tools/gcc.jam
@@ -368,7 +368,7 @@
@@ -677,7 +677,7 @@
}
case * :
{

View File

@ -1,11 +0,0 @@
--- boost/tuple/tuple_io.hpp
+++ boost/tuple/tuple_io.hpp
@@ -349,7 +349,7 @@
char c;
if (is_delimiter) {
is >> c;
- if (c!=d) {
+ if (is.good() && c!=d) {
is.setstate(std::ios::failbit);
}
}

View File

@ -1,11 +0,0 @@
--- tools/build/v1/gcc-tools.jam
+++ tools/build/v1/gcc-tools.jam
@@ -60,7 +60,7 @@
flags gcc CFLAGS <debug-symbols>on : -g ;
flags gcc LINKFLAGS <debug-symbols>on : -g ;
flags gcc CFLAGS <optimization>off : -O0 ;
-flags gcc CFLAGS <optimization>speed : -O3 ;
+flags gcc CFLAGS <optimization>speed : -O2 -fpermissive ;
# Other optimizations we might want for GCC
# -fforce-mem -fomit-frame-pointer

View File

@ -0,0 +1,38 @@
--- tools/build/v2/tools/builtin.jam
+++ tools/build/v2/tools/builtin.jam
@@ -91,7 +91,7 @@
feature runtime-debugging : on off : propagated ;
-feature optimization : off speed space : propagated ;
+feature optimization : off speed space rpm : propagated ;
feature profiling : off on : propagated ;
feature inlining : off on full : propagated ;
@@ -102,7 +102,7 @@
feature asynch-exceptions : off on : propagated ;
# Whether all extern "C" functions are considered nothrow by default
feature extern-c-nothrow : off on : propagated ;
-feature debug-symbols : on off : propagated ;
+feature debug-symbols : on off rpm : propagated ;
feature define : : free ;
feature undef : : free ;
feature "include" : : free path ; #order-sensitive ;
@@ -327,6 +327,7 @@
variant release : <optimization>speed <debug-symbols>off <inlining>full
<runtime-debugging>off <define>NDEBUG ;
variant profile : release : <profiling>on <debug-symbols>on ;
+variant rpm : <optimization>rpm <debug-symbols>rpm <inlining>full <runtime-debugging>off ;
class searched-lib-target : abstract-file-target
{
--- tools/build/v2/tools/gcc.jam
+++ tools/build/v2/tools/gcc.jam
@@ -270,6 +270,7 @@
flags gcc.compile OPTIONS <optimization>off : -O0 ;
flags gcc.compile OPTIONS <optimization>speed : -O3 ;
flags gcc.compile OPTIONS <optimization>space : -Os ;
+flags gcc.compile OPTIONS <optimization>rpm : "$RPM_OPT_FLAGS" ;
flags gcc.compile OPTIONS <inlining>off : -fno-inline ;
flags gcc.compile OPTIONS <inlining>on : -Wno-inline ;

View File

@ -1,10 +0,0 @@
--- boost/date_time/constrained_value.hpp
+++ boost/date_time/constrained_value.hpp
@@ -40,6 +40,7 @@
// typedef except_type exception_type;
constrained_value(value_type value)
{
+ value_ = value;
assign(value);
};
constrained_value& operator=(value_type v)

View File

@ -1,5 +1,5 @@
--- boost/visit_each.hpp.ORG 2004-07-25 04:29:28.000000000 +0200
+++ boost/visit_each.hpp 2006-07-13 16:41:14.000000000 +0200
--- boost/visit_each.hpp
+++ boost/visit_each.hpp
@@ -22,7 +22,7 @@
template<typename Visitor, typename T>
inline void visit_each(Visitor& visitor, const T& t)

View File

@ -1,7 +1,26 @@
-------------------------------------------------------------------
Wed Jan 16 10:19:30 CET 2008 - schwab@suse.de
Mon Jan 28 10:53:09 CET 2008 - schwab@suse.de
- Fix asm constraints.
- Remove obsolete patch again.
-------------------------------------------------------------------
Fri Jan 18 14:04:18 CET 2008 - pth@suse.de
- Fix CVE-2008-0171 and CVE-2008-0171 (bugzilla #353180)
- Qualify special_values_parser (bugzilla #353897)
-------------------------------------------------------------------
Thu Jan 17 18:18:03 CET 2008 - schwab@suse.de
- Remove obsolete patch.
-------------------------------------------------------------------
Mon Jan 14 13:51:36 CET 2008 - pth@suse.de
- Move 1.34.1 from BS to Autobuild
- Add patch for critical bug in Boost.Function.
- Include C headers where necessary.
- Make the tests for ULONG_MAX more readable 64.
-------------------------------------------------------------------
Wed Oct 24 17:49:46 CEST 2007 - rguenther@suse.de
@ -9,6 +28,300 @@ Wed Oct 24 17:49:46 CEST 2007 - rguenther@suse.de
- Use -fpermissive in addition to -O2 for building.
- Add patch to enable building wave with GCC 4.3.
-------------------------------------------------------------------
Mon Aug 20 15:09:41 CEST 2007 - pth@suse.de
- Only use fdupes from 10.3 onwards.
-------------------------------------------------------------------
Sat Aug 11 13:17:53 CEST 2007 - aj@suse.de
- Fix spec file to build again.
-------------------------------------------------------------------
Thu Aug 9 15:16:09 CEST 2007 - pth@suse.de
- Add man pages (made for 1.33.1).
- Package html documentation differently.
- Check all links and add missing files that do exist.
- Use %%fdupes
- Add patch by rschiele@gmail.com to pass compiler flags into
Boost.build.
- Update to 1.34.1 and use .spec file from bkoz@redhat.com as
a basis.
Changes 1.33.1 -> 1.34.0:
New Libraries:
* Foreach Library: BOOST_FOREACH macro for easily iterating over
the elements of a sequence,
* Statechart Library: Arbitrarily complex finite state machines
can be implemented in easily readable and
maintainable C++ code,
* TR1 Library: An implementation of the C++ Technical Report on Standard
Library Extensions, from John Maddock. This library does
not itself implement the TR1 components, rather it's a
thin wrapper that will include your standard library's
TR1 implementation (if it has one), otherwise it will
include the Boost Library equivalents, and import them
into namespace std::tr1. Highlights include: Reference
Wrappers, Smart Pointers, result_of, Function Object
Binders, Polymorphic function wrappers, Type Traits,
Random Number Generators and Distributions, Tuples, Fixed
Size Array, Hash Function Objects, Regular Expressions,
and Complex Number Additional Algorithms.
* Typeof Library: Typeof operator emulation, from Arkadiy Vertleyb
and Peder Holt.
* Xpressive Library: Regular expressions that can be written as strings
or as expression templates, and that can refer to
each other and themselves recursively with the
power of context-free grammars, from Eric Niebler.
Updated Libraries:
* Assign Library:
o Support for ptr_map<key,T> via the new function ptr_map_insert()
o Support for initialization of Pointer Containers when the
containers hold pointers to an abstract base class.
* Date_time library:
o Support for new US/Canada timezone rules and other bug fixes.
See Change History for details.
* Filesystem Library: Major upgrade in preparation for submission to the
C++ Standards Committee for TR2. Changes include:
o Internationalization, provided by class templates basic_path,
basic_filesystem_error, basic_directory_iterator, and
basic_directory_entry.
o Simplification of the path interface by eliminating special
constructors to identify native formats.
o Rationalization of predicate function design, including the
addition of several new functions.
o Clearer specification by reference to POSIX, the ISO/IEEE Single
Unix Standard, with provisions for Windows and other operating
systems.
o Preservation of existing user code whenever possible.
o More efficient directory iteration.
o Addition of a recursive directory iterator.
* Function Library: Boost.Function now implements a small buffer
optimization, which can drastically improve the
performance when copying or constructing
Boost.Function objects storing small function
objects. For instance, bind(&X:foo, &x, _1, _2)
requires no heap allocation when placed into a
Boost.Function object.
* Functional/Hash Library
o Use declarations for standard classes, so that the library
doesn't need to include all of their headers
o Deprecated the <boost/functional/hash/*.hpp> headers.
o Add support for the BOOST_HASH_NO_EXTENSIONS macro, which
disables the extensions to TR1
o Minor improvements to the hash functions for floating point numbers.
* Graph Library:
o edmonds_maximum_cardinality_matching,
o lengauer_tarjan_dominator_tree,
o compressed_sparse_row_graph,
o sorted_erdos_renyi_iterator,
o biconnected_components now supports a visitor and named
parameters,
o adjacency_matrix now models the Bidirectional Graph concept.
o dijkstra_shortest_paths now calls vis.initialize_vertex for each
vertex during initialization.
o Note: the name of the compiled library for the GraphViz reader has
changed to boost_graph (from bgl-viz) to match Boost conventions.
o See the complete revision history for more information.
* MultiArray Library: Boost.MultiArray now by default provides
range-checking for operator[]. Range checking can
be disabled by defining the macro
BOOST_DISABLE_ASSERTS before including
multi_array.hpp. A bug in multi_array::resize()
related to storage orders was fixed.
* Multi-index Containers Library:
o New random access indices.
o Non key-based indices feature new rearrange facilities.
o This version also includes a number of optimizations and usage
improvements. For a complete list of changes, see the library
release notes.
* Optional Library:
o boost::none_t and boost::none now added to Optional's
documentation
o Relational operators now directly support arguments of type
'T' and 'none_t'
o operator->() now also works with reference types.
o Helper functions make_optional(val), make_optional(cond,val)
and get_optional_value_or(opt,alternative_value) added.
o Constructor taking a boolean condition (as well as a value)
added.
o Member function get_value_or(alternative_value) added.
o Incompatbility bug with mpl::apply<> fixed.
o Converting assignment bug with uninitialized lvalues fixed.
* Parameter Library:
o Every ArgumentPack is now a valid MPL Forward Sequence.
o Support for unnamed arguments (those whose keyword is
deduced from their types) is added.
o Support for named and unnamed template arguments is added.
o New overload generation macros solve the forwarding problem
directly.
o See also the Python library changes, below.
* Pointer Container Library:
o Support for serialization via Boost.Serialization.
o Exceptions can be disabled by defining the macro
BOOST_PTR_CONTAINER_NO_EXCEPTIONS before including any header.
This macro is defined by default if BOOST_NO_EXCEPTIONS is defined.
o Additional std::auto_ptr<T> overloads added s.t. one can also
pass std::auto_ptr<T> instead of only T* arguments to member
functions.
o transfer() now has weaker requirements s.t. one can transfer
objects from ptr_container<Derived> to ptr_container<Base>,
* Python Library:
o Boost.Python now automatically appends C++ signatures to
docstrings. The new docstring_options.hpp header is available to
control the content of docstrings.
o stl_input_iterator, for turning a Python iterable object into an
STL input iterator, from Eric Niebler.
o Support for void* conversions is added.
o Integrated support for wrapping C++ functions built with the
parameter library; keyword names are automatically known to
docsstrings.
o Enhancements to the API for better embedding support
(boost::python::import(), boost::python::exec(), and
boost::python::exec_file()).
* Signals Library: More improvements to signal invocation performance.
* Smart Pointers Library:
o Allocator support as proposed in N1851 (162 Kb PDF).
o pointer_cast and pointer_to_other utilities to allow
pointer-independent code,
* String Algorithm Library:
o lexicographical_compare
o join
o New comparison predicates is_less, is_not_greater.
o Negative indexes support (like Perl) in various algorihtms
(*_head/tail, *_nth).
* Wave Library:
o Wave now correctly recognizes pp-number tokens as mandated by
the C++ Standard, which are converted to C++ tokens right before
they are returned from the library.
o Several new preprocessing hooks have been added. For a complete
description please refer to the related documentation page: The
Context Policy.
o Shared library (dll) support has been added for the generated
Wave libraries.
o The overall error handling has been improved. It is now possible
to recover and continue after an error or a warning was issued.
o Support for optional comment and/or full whitespace
preservation in the generated output stream has been added.
o The Wave library now performs automatic include guard
detection to avoid accessing header files more than once, if
appropriate.
o Full interactive mode has been added to the Wave tool. Now the
Wave tool can be used just like Python or Perl for instance to
interactively try out your BOOST_PP macros. Additionally it is
now possible to load and save the current state of an
interactive session (macro tables et.al.).
o The overall performance has been improved by upto 40-60%,
depending on the concrete files to process.
o Support for new pragmas has been added allowing to control
certain library features from inside the preprocessed sources
(partial output redirection, control of generated whitespace
and #line directives).
o Optional support for #pragma message "..." has been added.
o This version also includes a number of bug fixes and usage
improvements. For a complete list of changes, see the
libraries change log.
Fixes in 1.34.1:
* Fixes for build on IBM pSeries for AIX and Linux
* gcc-4.2 atomicity.h location fixed
* [iostreams] zlib_compressor memory leaks in 1.34.0
* filtering ostream problem... pushing zlib_compressor works in 1_33,
dies in 1_34
* [doc] The "Getting Started" page mentions incorrect library names
* [filesystem] missing documentation or bad links
* add missing docs for boost.python API enhancements.
* Entire iostreams library outdated in 1.34.0
* numeric_limits specializations in limits.hpp are incorrect
* Updated ICU support in Boost.Regex
* Make boost.python compatible with python 2.5
* ::boost::detail::empty_base improved
* Fix failing uild of libs/python/example/quickstart.
* Fix problems when building Python modules on boost 1.34.0
* Patches to allow boost 1.34.0 to compile with stricter warning
checking under mac OS and gcc
* Unable to compile Python example, tutorial, or quickstart with
Boost 1_34_0
* Improper overflow handling in shortest paths algorithms
* Multiple include paths for Python
* Add documentation for the iter_find/split algorithms
* regex_token_iterator crashes
* regex_error exception when quantifying some non-capturing groups
* read_write_mutex docs don't clearly specify that the functionality
is not present
- Remove patches not needed anymore.
- Replace file dupes by symlinks.
- Add rpmlintrc to suppress rpmlint warnings for things that won't be
changed.
-------------------------------------------------------------------
Sun Jul 15 16:09:59 CEST 2007 - schwab@suse.de

View File

@ -1,5 +1,5 @@
#
# spec file for package boost (Version 1.33.1)
# spec file for package boost (Version 1.34.1)
#
# Copyright (c) 2008 SUSE LINUX Products GmbH, Nuernberg, Germany.
# This file and all modifications and additions to the pristine
@ -11,36 +11,43 @@
# norootforbuild
Name: boost
BuildRequires: boost-jam gcc-c++ libbz2-devel libicu-devel python-devel xorg-x11-devel
%define file_version 1_33_1
%define version_tag 1_33_1
%define file_version 1_34_1
%define man_version 1.33.1
%define man_file_version 1_33_1
BuildRequires: boost-jam >= 3.1.14 dos2unix gcc-c++ libbz2-devel libicu-devel python-devel xorg-x11-devel
%if 0%suse_version > 1020
BuildRequires: fdupes
%endif
Url: http://www.boost.org
License: BSD 3-Clause
Group: Development/Libraries/C and C++
Summary: Boost C++ Libraries
BuildRoot: %{_tmppath}/%{name}-%{version}-build
Version: 1.33.1
Release: 136
Version: 1.34.1
Release: 8
Source0: %{name}_%{file_version}.tar.bz2
Source1: NEWS
Patch: boost-threading.patch
Source1: boost-rpmlintrc
Source2: boost_%{man_file_version}_man.tar.bz2
Source3: existing_extra_docs
Patch0: boost-threading.patch
Patch1: boost-thread.patch
Patch3: boost-use_O2.patch
Patch4: boost-undefined_behaviour.patch
Patch5: boost-configure.patch
Patch6: boost-used_unitialized.patch
Patch7: boost-no_type_punning.patch
Patch8: boost-no_type_attrs_on_forward_decls.patch
Patch9: boost-strip.patch
Patch10: boost-ia64.patch
Patch11: boost-visit_each.diff
Patch12: boost-python_2_5-minimal.patch
Patch13: boost-atomicity.patch
Patch14: boost_1_33_1-gcc43.patch
Patch15: sp-counted-base-gcc-ppc.diff
Patch2: boost-no_type_punning.patch
Patch4: boost-visit_each.diff
Patch5: boost-pass_BJAM_CONFIG.patch
Patch6: boost-use_rpm_optflags.patch
Patch7: boost-fix_doc_url.patch
Patch8: boost-no_segfault_in_Regex_filter.patch
Patch9: boost-no_segfault_on_dir_iteration.patch
Patch10: boost-fix_documentation.patch
Patch11: boost-Boost.Function.patch
Patch12: boost-missing_includes.patch
Patch13: boost-no_intrinsic_int64_t.patch
Patch14: boost-codecleanup.patch
# Secfix for 1.34.1
Patch15: boost-CVE-2008-0171.patch
#
Patch16: boost-qualify_name.patch
%define _prefix /usr
%define python_root /usr
%define python_lib_path %py_libdir/config
%description
Boost provides free peer-reviewed portable C++ source libraries. The
@ -86,13 +93,13 @@ This package contains documentation about the boost dynamic libraries.
%prep
%setup -q -n %{name}_%{file_version}
find -name .cvsignore|xargs rm -f
%setup -q -n %{name}_%{file_version} -a 2
find -name .cvsignore -exec rm -f {} +
#everything in the tarball has the executable flag set ......
find -type f ! \( -name \*.sh -o -name \*.py -o -name \*.pl -o -name configure \) | xargs chmod -x
find -type f ! \( -name \*.sh -o -name \*.py -o -name \*.pl \) -exec chmod -x {} +
%patch
%patch1
%patch3
%patch2
%patch4
%patch5
%patch6
@ -104,28 +111,86 @@ find -type f ! \( -name \*.sh -o -name \*.py -o -name \*.pl -o -name configure \
%patch12
%patch13
%patch14
%patch15 -p1
cp %{S:1} .
%patch15
%patch16
chmod +x configure
#stupid build machinery copies .orig files
find . -name \*.orig -exec rm {} +
%build
#%define boost_cxxflags %optflags -fno-strict-aliasing
%define boost_cxxflags %optflags
%define bjam_flags -d2 --layout=system --no-objcopy %{?jobs:-j%jobs}
find . -type f|xargs chmod u+w
# To have the documentation in a place that can easily be included in the file list
mkdir .backup
tar -cf - $(find . -name \*.htm\* -o -name \*.gif -o -name \*.css -o -name \*.jpg)| tar -C .backup -xf -
rm -rf .backup/boost
ln -s /usr/include/boost .backup
%define bjam_config -d2 --layout=system %{?jobs:-j%jobs}
find . -type f -exec chmod u+w {} +
# Now build it
./configure --with-bjam=/usr/bin/bjam --with-icu --prefix=%{buildroot}/usr --libdir=%{buildroot}%{_libdir}
make GXX="c++ %{boost_cxxflags}" GCC="c++ %{boost_cxxflags}" BJAM_FLAGS="%{bjam_flags}"
BUILD_FLAGS="--with-toolset=gcc --prefix=%{buildroot}/usr --libdir=%{buildroot}%{_libdir} --with-bjam=/usr/bin/bjam"
PYTHON_VERSION=$(python -c 'import sys; print sys.version[:3]')
PYTHON_FLAGS="--with-python-root=/usr --with-python-version=$PYTHON_VERSION"
REGEX_FLAGS="--with-icu"
BJAM_TARGET=rpm
BJAM_CONFIG="%{bjam_config}" BJAM_TARGET="$BJAM_TARGET" ./configure $BUILD_FLAGS $PYTHON_FLAGS $REGEX_FLAGS
export RPM_OPT_FLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing -Wno-deprecated"
make all
%install
make GXX="c++ %{boost_cxxflags}" GCC="c++ %{boost_cxxflags}" BJAM_FLAGS="%{bjam_flags}" install
chmod -R u+rw,go+rX %{buildroot}%{_prefix}
## symlink needed for jahshaka's openlibraries framework, jw@suse.de
(cd %{buildroot}%{_prefix}/%_lib; ln -s libboost_thread-mt.so libboost_thread.so)
mkdir -p %{buildroot}%{_libdir}
mkdir -p %{buildroot}%{_includedir}
mkdir -p %{buildroot}%{_docdir}/boost-%{version}
# install lib
for i in `find stage -type f -name \*.a`; do
NAME=`basename $i`;
install -p -m 0644 $i %{buildroot}%{_libdir}/$NAME;
done;
for lib in `find stage -type f -name \*.so`; do
NAME=$lib;
SONAME=$lib.2;
VNAME=$lib.%{version};
base=$(basename $lib);
NAMEbase=$base;
SONAMEbase=$base.2;
VNAMEbase=$base.%{version};
mv $lib $VNAME;
ln -s $VNAMEbase $SONAME;
ln -s $VNAMEbase $NAME;
install -p -m 755 $VNAME %{buildroot}%{_libdir}/$VNAMEbase;
mv $SONAME %{buildroot}%{_libdir}/$SONAMEbase;
mv $NAME %{buildroot}%{_libdir}/$NAMEbase;
done;
# install include files
for i in $(find boost -type d); do
mkdir -p %{buildroot}%{_includedir}/$i
done
for i in $(find boost -type f); do
install -p -m 644 $i %{buildroot}%{_includedir}/$i
done
chmod +x %{buildroot}%{_includedir}/boost/signals/detail/gen_signal_N.pl \
%{buildroot}%{_includedir}/boost/pool/detail/pool_construct_simple.sh \
%{buildroot}%{_includedir}/boost/pool/detail/pool_construct.sh \
%{buildroot}%{_includedir}/boost/function/gen_function_N.pl \
%{buildroot}%{_includedir}/boost/function/detail/gen_maybe_include.pl
#install the man pages
install -d %buildroot/%{_mandir}/man3
install -d %buildroot/%{_mandir}/man7
pushd boost-%{man_version}/doc/man
for page in $(find . -type f); do
install -p -m 644 $page %buildroot/%{_mandir}/$page
done
popd
#install doc files
dos2unix libs/ptr_container/doc/tutorial_example.html \
libs/ptr_container/doc/style.css \
libs/parameter/doc/html/reference.html \
libs/parameter/doc/html/index.html \
libs/iostreams/doc/tree/tree.js \
libs/graph/doc/lengauer_tarjan_dominator.htm
tar --files-from=%{S:3} -cf - $(find . -name \*.htm\* -o -name \*.gif -o -name \*.css -o -name \*.jpg -o -name \*.png -o -name \*.ico) | tar -C %{buildroot}%{_docdir}/boost-%{version} -xf -
rm -rf %{buildroot}%{_docdir}/boost-%{version}/boost
ln -s /usr/include/boost %{buildroot}%{_docdir}/boost-%{version}/
ln -s ../LICENSE_1_0.txt %{buildroot}%{_docdir}/boost-%{version}/libs
#only for documentation, don't need to be executable
find %{buildroot}%{_docdir}/boost-%{version} -name \*.py -exec chmod -x {} +
#symlink dupes
%if 0%suse_version > 1020
%fdupes %buildroot
%endif
%post
%run_ldconfig
@ -134,64 +199,256 @@ chmod -R u+rw,go+rX %{buildroot}%{_prefix}
%run_ldconfig
%files
%defattr(-,root,root)
%doc NEWS
%{_libdir}/libboost_date_time.so.*
%{_libdir}/libboost_filesystem.so.*
%{_libdir}/libboost_iostreams.so.*
%{_libdir}/libboost_prg_exec_monitor.so.*
%{_libdir}/libboost_program_options.so.*
%{_libdir}/libboost_python.so.*
%{_libdir}/libboost_regex.so.*
%{_libdir}/libboost_serialization.so.*
%{_libdir}/libboost_signals.so.*
%{_libdir}/libboost_test_exec_monitor.so.*
%{_libdir}/libboost_thread-mt.so.*
%{_libdir}/libboost_unit_test_framework.so.*
%{_libdir}/libboost_wserialization.so.*
%defattr(-, root, root, -)
%doc LICENSE_1_0.txt README
%{_libdir}/*.so.%{version}
%{_libdir}/*.so.2
%files devel
%defattr(-,root,root)
%{_libdir}/libboost_date_time.a
%{_libdir}/libboost_filesystem.a
%{_libdir}/libboost_iostreams.a
%{_libdir}/libboost_prg_exec_monitor.a
%{_libdir}/libboost_program_options.a
%{_libdir}/libboost_python.a
%{_libdir}/libboost_regex.a
%{_libdir}/libboost_serialization.a
%{_libdir}/libboost_signals.a
%{_libdir}/libboost_test_exec_monitor.a
%{_libdir}/libboost_thread-mt.a
%{_libdir}/libboost_unit_test_framework.a
%{_libdir}/libboost_wserialization.a
%{_libdir}/libboost_date_time.so
%{_libdir}/libboost_filesystem.so
%{_libdir}/libboost_iostreams.so
%{_libdir}/libboost_prg_exec_monitor.so
%{_libdir}/libboost_program_options.so
%{_libdir}/libboost_python.so
%{_libdir}/libboost_regex.so
%{_libdir}/libboost_serialization.so
%{_libdir}/libboost_signals.so
%{_libdir}/libboost_test_exec_monitor.so
%{_libdir}/libboost_thread-mt.so
%{_libdir}/libboost_thread.so
%{_libdir}/libboost_unit_test_framework.so
%{_libdir}/libboost_wave.a
%{_libdir}/libboost_wserialization.so
%defattr(-, root, root, -)
%{_includedir}/boost
%{_libdir}/*.so
%{_libdir}/*.a
%files doc
%defattr(-,root,root)
%doc .backup/*
%defattr(-, root, root, -)
%doc %{_docdir}/boost-%{version}
%doc %{_mandir}/man3/*.3.gz
%doc %{_mandir}/man7/*.7.gz
%changelog
* Wed Jan 16 2008 schwab@suse.de
- Fix asm constraints.
* Mon Jan 28 2008 schwab@suse.de
- Remove obsolete patch again.
* Fri Jan 18 2008 pth@suse.de
- Fix CVE-2008-0171 and CVE-2008-0171 (bugzilla #353180)
- Qualify special_values_parser (bugzilla #353897)
* Thu Jan 17 2008 schwab@suse.de
- Remove obsolete patch.
* Mon Jan 14 2008 pth@suse.de
- Move 1.34.1 from BS to Autobuild
- Add patch for critical bug in Boost.Function.
- Include C headers where necessary.
- Make the tests for ULONG_MAX more readable 64.
* Wed Oct 24 2007 rguenther@suse.de
- Use -fpermissive in addition to -O2 for building.
- Add patch to enable building wave with GCC 4.3.
* Mon Aug 20 2007 pth@suse.de
- Only use fdupes from 10.3 onwards.
* Sat Aug 11 2007 aj@suse.de
- Fix spec file to build again.
* Thu Aug 09 2007 pth@suse.de
- Add man pages (made for 1.33.1).
- Package html documentation differently.
- Check all links and add missing files that do exist.
- Use %%fdupes
- Add patch by rschiele@gmail.com to pass compiler flags into
Boost.build.
- Update to 1.34.1 and use .spec file from bkoz@redhat.com as
a basis.
Changes 1.33.1 -> 1.34.0:
New Libraries:
* Foreach Library: BOOST_FOREACH macro for easily iterating over
the elements of a sequence,
* Statechart Library: Arbitrarily complex finite state machines
can be implemented in easily readable and
maintainable C++ code,
* TR1 Library: An implementation of the C++ Technical Report on Standard
Library Extensions, from John Maddock. This library does
not itself implement the TR1 components, rather it's a
thin wrapper that will include your standard library's
TR1 implementation (if it has one), otherwise it will
include the Boost Library equivalents, and import them
into namespace std::tr1. Highlights include: Reference
Wrappers, Smart Pointers, result_of, Function Object
Binders, Polymorphic function wrappers, Type Traits,
Random Number Generators and Distributions, Tuples, Fixed
Size Array, Hash Function Objects, Regular Expressions,
and Complex Number Additional Algorithms.
* Typeof Library: Typeof operator emulation, from Arkadiy Vertleyb
and Peder Holt.
* Xpressive Library: Regular expressions that can be written as strings
or as expression templates, and that can refer to
each other and themselves recursively with the
power of context-free grammars, from Eric Niebler.
Updated Libraries:
* Assign Library:
o Support for ptr_map<key,T> via the new function ptr_map_insert()
o Support for initialization of Pointer Containers when the
containers hold pointers to an abstract base class.
* Date_time library:
o Support for new US/Canada timezone rules and other bug fixes.
See Change History for details.
* Filesystem Library: Major upgrade in preparation for submission to the
C++ Standards Committee for TR2. Changes include:
o Internationalization, provided by class templates basic_path,
basic_filesystem_error, basic_directory_iterator, and
basic_directory_entry.
o Simplification of the path interface by eliminating special
constructors to identify native formats.
o Rationalization of predicate function design, including the
addition of several new functions.
o Clearer specification by reference to POSIX, the ISO/IEEE Single
Unix Standard, with provisions for Windows and other operating
systems.
o Preservation of existing user code whenever possible.
o More efficient directory iteration.
o Addition of a recursive directory iterator.
* Function Library: Boost.Function now implements a small buffer
optimization, which can drastically improve the
performance when copying or constructing
Boost.Function objects storing small function
objects. For instance, bind(&X:foo, &x, _1, _2)
requires no heap allocation when placed into a
Boost.Function object.
* Functional/Hash Library
o Use declarations for standard classes, so that the library
doesn't need to include all of their headers
o Deprecated the <boost/functional/hash/*.hpp> headers.
o Add support for the BOOST_HASH_NO_EXTENSIONS macro, which
disables the extensions to TR1
o Minor improvements to the hash functions for floating point numbers.
* Graph Library:
o edmonds_maximum_cardinality_matching,
o lengauer_tarjan_dominator_tree,
o compressed_sparse_row_graph,
o sorted_erdos_renyi_iterator,
o biconnected_components now supports a visitor and named
parameters,
o adjacency_matrix now models the Bidirectional Graph concept.
o dijkstra_shortest_paths now calls vis.initialize_vertex for each
vertex during initialization.
o Note: the name of the compiled library for the GraphViz reader has
changed to boost_graph (from bgl-viz) to match Boost conventions.
o See the complete revision history for more information.
* MultiArray Library: Boost.MultiArray now by default provides
range-checking for operator[]. Range checking can
be disabled by defining the macro
BOOST_DISABLE_ASSERTS before including
multi_array.hpp. A bug in multi_array::resize()
related to storage orders was fixed.
* Multi-index Containers Library:
o New random access indices.
o Non key-based indices feature new rearrange facilities.
o This version also includes a number of optimizations and usage
improvements. For a complete list of changes, see the library
release notes.
* Optional Library:
o boost::none_t and boost::none now added to Optional's
documentation
o Relational operators now directly support arguments of type
'T' and 'none_t'
o operator->() now also works with reference types.
o Helper functions make_optional(val), make_optional(cond,val)
and get_optional_value_or(opt,alternative_value) added.
o Constructor taking a boolean condition (as well as a value)
added.
o Member function get_value_or(alternative_value) added.
o Incompatbility bug with mpl::apply<> fixed.
o Converting assignment bug with uninitialized lvalues fixed.
* Parameter Library:
o Every ArgumentPack is now a valid MPL Forward Sequence.
o Support for unnamed arguments (those whose keyword is
deduced from their types) is added.
o Support for named and unnamed template arguments is added.
o New overload generation macros solve the forwarding problem
directly.
o See also the Python library changes, below.
* Pointer Container Library:
o Support for serialization via Boost.Serialization.
o Exceptions can be disabled by defining the macro
BOOST_PTR_CONTAINER_NO_EXCEPTIONS before including any header.
This macro is defined by default if BOOST_NO_EXCEPTIONS is defined.
o Additional std::auto_ptr<T> overloads added s.t. one can also
pass std::auto_ptr<T> instead of only T* arguments to member
functions.
o transfer() now has weaker requirements s.t. one can transfer
objects from ptr_container<Derived> to ptr_container<Base>,
* Python Library:
o Boost.Python now automatically appends C++ signatures to
docstrings. The new docstring_options.hpp header is available to
control the content of docstrings.
o stl_input_iterator, for turning a Python iterable object into an
STL input iterator, from Eric Niebler.
o Support for void* conversions is added.
o Integrated support for wrapping C++ functions built with the
parameter library; keyword names are automatically known to
docsstrings.
o Enhancements to the API for better embedding support
(boost::python::import(), boost::python::exec(), and
boost::python::exec_file()).
* Signals Library: More improvements to signal invocation performance.
* Smart Pointers Library:
o Allocator support as proposed in N1851 (162 Kb PDF).
o pointer_cast and pointer_to_other utilities to allow
pointer-independent code,
* String Algorithm Library:
o lexicographical_compare
o join
o New comparison predicates is_less, is_not_greater.
o Negative indexes support (like Perl) in various algorihtms
(*_head/tail, *_nth).
* Wave Library:
o Wave now correctly recognizes pp-number tokens as mandated by
the C++ Standard, which are converted to C++ tokens right before
they are returned from the library.
o Several new preprocessing hooks have been added. For a complete
description please refer to the related documentation page: The
Context Policy.
o Shared library (dll) support has been added for the generated
Wave libraries.
o The overall error handling has been improved. It is now possible
to recover and continue after an error or a warning was issued.
o Support for optional comment and/or full whitespace
preservation in the generated output stream has been added.
o The Wave library now performs automatic include guard
detection to avoid accessing header files more than once, if
appropriate.
o Full interactive mode has been added to the Wave tool. Now the
Wave tool can be used just like Python or Perl for instance to
interactively try out your BOOST_PP macros. Additionally it is
now possible to load and save the current state of an
interactive session (macro tables et.al.).
o The overall performance has been improved by upto 40-60%%,
depending on the concrete files to process.
o Support for new pragmas has been added allowing to control
certain library features from inside the preprocessed sources
(partial output redirection, control of generated whitespace
and #line directives).
o Optional support for #pragma message "..." has been added.
o This version also includes a number of bug fixes and usage
improvements. For a complete list of changes, see the
libraries change log.
Fixes in 1.34.1:
* Fixes for build on IBM pSeries for AIX and Linux
* gcc-4.2 atomicity.h location fixed
* [iostreams] zlib_compressor memory leaks in 1.34.0
* filtering ostream problem... pushing zlib_compressor works in 1_33,
dies in 1_34
* [doc] The "Getting Started" page mentions incorrect library names
* [filesystem] missing documentation or bad links
* add missing docs for boost.python API enhancements.
* Entire iostreams library outdated in 1.34.0
* numeric_limits specializations in limits.hpp are incorrect
* Updated ICU support in Boost.Regex
* Make boost.python compatible with python 2.5
* ::boost::detail::empty_base improved
* Fix failing uild of libs/python/example/quickstart.
* Fix problems when building Python modules on boost 1.34.0
* Patches to allow boost 1.34.0 to compile with stricter warning
checking under mac OS and gcc
* Unable to compile Python example, tutorial, or quickstart with
Boost 1_34_0
* Improper overflow handling in shortest paths algorithms
* Multiple include paths for Python
* Add documentation for the iter_find/split algorithms
* regex_token_iterator crashes
* regex_error exception when quantifying some non-capturing groups
* read_write_mutex docs don't clearly specify that the functionality
is not present
- Remove patches not needed anymore.
- Replace file dupes by symlinks.
- Add rpmlintrc to suppress rpmlint warnings for things that won't be
changed.
* Sun Jul 15 2007 schwab@suse.de
- Fix reference to atomicity.h.
* Sat Mar 24 2007 aj@suse.de
@ -214,7 +471,7 @@ chmod -R u+rw,go+rX %{buildroot}%{_prefix}
- Fix broken assembler constraints [#148429].
* Wed Jan 25 2006 mls@suse.de
- converted neededforbuild to BuildRequires
* Tue Jan 17 2006 schwab@suse.de
* Wed Jan 18 2006 schwab@suse.de
- Don't strip binaries.
* Wed Dec 07 2005 pth@suse.de
- Fix cases of type-punning in boost::python

View File

@ -1,113 +0,0 @@
--- tools/wave/cpp.cpp.orig 2005-05-16 11:36:01.000000000 +0200
+++ tools/wave/cpp.cpp 2006-05-11 16:14:31.000000000 +0200
@@ -108,7 +108,7 @@
///////////////////////////////////////////////////////////////////////////////
// forward declarations only
-namespace cmd_line_utils
+namespace cmd_line_util
{
class include_paths;
}
@@ -116,7 +116,7 @@
namespace boost { namespace program_options
{
void validate(boost::any &v, std::vector<std::string> const &s,
- cmd_line_utils::include_paths *, int);
+ cmd_line_util::include_paths *, long);
}} // boost::program_options
///////////////////////////////////////////////////////////////////////////////
@@ -234,7 +234,7 @@
namespace boost { namespace program_options {
void validate(boost::any &v, std::vector<std::string> const &s,
- cmd_line_util::include_paths *, int)
+ cmd_line_util::include_paths *, long)
{
cmd_line_util::include_paths::validate(v, s);
}
--- libs/wave/src/cpplexer/re2clex/aq.cpp.orig 2006-05-11 20:21:26.000000000 +0200
+++ libs/wave/src/cpplexer/re2clex/aq.cpp 2006-05-11 20:21:33.000000000 +0200
@@ -51,7 +51,7 @@
if (q->tail <= q->head) /* tail has wrapped around */
{
/* move the tail from the beginning to the end */
- memcpy(q->queue + q->max_size, q->queue,
+ memmove(q->queue + q->max_size, q->queue,
(q->tail + 1) * sizeof(aq_stdelement));
q->tail += q->max_size;
}
--- ./libs/regex/src/regex_raw_buffer.cpp.orig 2006-05-11 20:27:09.000000000 +0200
+++ ./libs/regex/src/regex_raw_buffer.cpp 2006-05-11 20:27:17.000000000 +0200
@@ -45,7 +45,7 @@
// allocate and copy data:
register pointer ptr = static_cast<pointer>(::operator new(newsize));
BOOST_REGEX_NOEH_ASSERT(ptr)
- std::memcpy(ptr, start, datasize);
+ std::memmove(ptr, start, datasize);
// get rid of old buffer:
::operator delete(start);
--- ./boost/wave/util/flex_string.hpp.orig 2006-05-11 20:39:21.000000000 +0200
+++ ./boost/wave/util/flex_string.hpp 2006-05-11 20:39:35.000000000 +0200
@@ -123,7 +123,7 @@
{
const std::size_t s = e - b;
using namespace std;
- memcpy(d, b, s * sizeof(*b));
+ memmove(d, b, s * sizeof(*b));
return d + s;
}
--- libs/wave/src/cpplexer/re2clex/cpp_re.cpp.orig 2006-05-12 17:41:15.000000000 +0200
+++ libs/wave/src/cpplexer/re2clex/cpp_re.cpp 2006-05-12 17:42:05.000000000 +0200
@@ -187,7 +187,7 @@
{
if (NULL == s->lim)
s->lim = s->top;
- memcpy(s->bot, s->tok, s->lim - s->tok);
+ memmove(s->bot, s->tok, s->lim - s->tok);
s->tok = s->bot;
s->ptr -= cnt;
cursor -= cnt;
@@ -211,7 +211,7 @@
return cursor;
}
- memcpy(buf, s->tok, s->lim - s->tok);
+ memmove(buf, s->tok, s->lim - s->tok);
s->tok = buf;
s->ptr = &buf[s->ptr - s->bot];
cursor = &buf[cursor - s->bot];
@@ -231,7 +231,7 @@
cnt = s->last - s->act;
if (cnt > BSIZE)
cnt = BSIZE;
- memcpy(s->lim, s->act, cnt);
+ memmove(s->lim, s->act, cnt);
s->act += cnt;
if (cnt != BSIZE)
{
--- libs/wave/src/cpplexer/re2clex/cpp_re.cpp.orig 2006-05-15 13:29:00.000000000 +0200
+++ libs/wave/src/cpplexer/re2clex/cpp_re.cpp 2006-05-15 13:31:59.000000000 +0200
@@ -51,7 +50,7 @@
#define YYCURSOR cursor
#define YYLIMIT limit
#define YYMARKER marker
-#define YYFILL(n) {cursor = uchar_wrapper(fill(s, cursor), cursor.column);}
+#define YYFILL(n) {cursor = uchar_wrapper(fill(s, cursor), cursor.column); limit = uchar_wrapper (s->lim); }
//#define RET(i) {s->cur = cursor; return (i);}
#define RET(i) \
--- boost/wave/util/flex_string.hpp.orig 2007-05-12 11:54:54.000000000 +0200
+++ boost/wave/util/flex_string.hpp 2007-05-12 11:55:09.000000000 +0200
@@ -83,6 +83,7 @@
#include <limits>
#include <stdexcept>
#include <cstddef>
+#include <cstring>
///////////////////////////////////////////////////////////////////////////////
namespace boost {

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:6232e93205acbc8c705f44f15977aae158550c99a384f41606cff26c16393be0
size 11507161

3
boost_1_33_1_man.tar.bz2 Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:800e67c4a489d54787eb91a5da56343b6f446cea2d36eb1f93c99ff019356f28
size 78423

3
boost_1_34_1.tar.bz2 Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:0f866c75b025a4f1340117a106595cc0675f48ba1e5a9b5c221ec7f19e96ec4c
size 12986931

533
existing_extra_docs Normal file
View File

@ -0,0 +1,533 @@
libs/algorithm/minmax/example/minmax_ex.cpp
libs/algorithm/minmax/example/minmax_timer.cpp
libs/assign/test/array.cpp
libs/assign/test/list_inserter.cpp
libs/assign/test/list_of.cpp
libs/assign/test/list_of_workaround.cpp
libs/assign/test/std.cpp
libs/bind/bind_as_compose.cpp
libs/bind/bind_visitor.cpp
libs/bind/test/bind_fastcall_mf_test.cpp
libs/bind/test/bind_fastcall_test.cpp
libs/bind/test/bind_stdcall_mf_test.cpp
libs/bind/test/bind_stdcall_test.cpp
libs/bind/test/bind_test.cpp
libs/bind/test/mem_fn_derived_test.cpp
libs/bind/test/mem_fn_fastcall_test.cpp
libs/bind/test/mem_fn_stdcall_test.cpp
libs/bind/test/mem_fn_test.cpp
libs/bind/test/mem_fn_void_test.cpp
libs/compatibility/generate_cpp_c_headers.py
libs/concept_check/bad_error_eg.cpp
libs/concept_check/stl_concept_check.cpp
libs/concept_check/stl_concept_covering.cpp
libs/config/test/limits_test.cpp
libs/config/tools/configure.in
libs/conversion/cast_test.cpp
libs/conversion/lexical_cast_test.cpp
libs/crc/crc_example.cpp
libs/crc/crc_test.cpp
libs/filesystem/build/Jamfile.v2
libs/filesystem/example/simple_ls.cpp
libs/filesystem/test/fstream_test.cpp
libs/filesystem/test/operations_test.cpp
libs/filesystem/test/path_test.cpp
libs/filesystem/test/wide_test.cpp
libs/format/example/sample_advanced.cpp
libs/format/example/sample_formats.cpp
libs/format/example/sample_new_features.cpp
libs/format/example/sample_userType.cpp
libs/functional/function_test.cpp
libs/functional/hash/examples/books.cpp
libs/functional/hash/examples/point.cpp
libs/functional/hash/examples/portable.cpp
libs/function/test/allocator_test.cpp
libs/function/test/contains_test.cpp
libs/function/test/function_30.cpp
libs/function/test/function_arith_cxx98.cpp
libs/function/test/function_arith_portable.cpp
libs/function/test/function_n_test.cpp
libs/function/test/function_ref_cxx98.cpp
libs/function/test/function_ref_portable.cpp
libs/function/test/function_test.cpp
libs/function/test/function_test_fail1.cpp
libs/function/test/function_test_fail2.cpp
libs/function/test/lambda_test.cpp
libs/function/test/mem_fun_cxx98.cpp
libs/function/test/mem_fun_portable.cpp
libs/function/test/stateless_test.cpp
libs/function/test/std_bind_cxx98.cpp
libs/function/test/std_bind_portable.cpp
libs/function/test/sum_avg_cxx98.cpp
libs/function/test/sum_avg_portable.cpp
libs/graph/doc/iscope99.pdf
libs/graph/doc/isomorphism-impl.pdf
libs/graph/example/bfs.cpp
libs/graph/example/bfs-example2.cpp
libs/graph/example/bfs-example.cpp
libs/graph/example/biconnected_components.cpp
libs/graph/example/city_visitor.cpp
libs/graph/example/connected_components.cpp
libs/graph/example/csr-example.cpp
libs/graph/example/cuthill_mckee_ordering.cpp
libs/graph/example/dave.cpp
libs/graph/example/dfs-example.cpp
libs/graph/example/dfs_parenthesis.cpp
libs/graph/example/dijkstra-example.cpp
libs/graph/example/edmunds-karp-eg.cpp
libs/graph/example/family-tree-eg.cpp
libs/graph/example/file_dependencies.cpp
libs/graph/example/fr_layout.cpp
libs/graph/example/girth.cpp
libs/graph/example/graphviz.cpp
libs/graph/example/incremental_components.cpp
libs/graph/example/isomorphism.cpp
libs/graph/example/johnson-eg.cpp
libs/graph/example/kevin-bacon.cpp
libs/graph/example/king_ordering.cpp
libs/graph/example/kruskal-example.cpp
libs/graph/example/matching_example.cpp
libs/graph/example/max_flow.cpp
libs/graph/example/miles_span.cpp
libs/graph/example/minimum_degree_ordering.cpp
libs/graph/example/ordered_out_edges.cpp
libs/graph/example/quick_tour.cpp
libs/graph/example/reverse-graph-eg.cpp
libs/graph/example/roget_components.cpp
libs/graph/example/sloan_ordering.cpp
libs/graph/example/strong_components.cpp
libs/graph/example/transitive_closure.cpp
libs/graph/example/transpose-example.cpp
libs/graph/example/undirected.cpp
libs/graph/example/undirected_dfs.cpp
libs/graph/test/dominator_tree_test.cpp
libs/graph/test/graph.cpp
libs/integer/cstdint_test.cpp
libs/integer/integer_test.cpp
libs/integer/integer_traits_test.cpp
libs/integer/test/integer_mask_test.cpp
libs/integer/test/static_log2_test.cpp
libs/integer/test/static_min_max_test.cpp
libs/iostreams/doc/tree/tree.js
libs/iostreams/example/container_device.hpp
libs/iostreams/example/dictionary_filter.hpp
libs/iostreams/example/finite_state_filter.hpp
libs/iostreams/example/line_wrapping_filter.hpp
libs/iostreams/example/shell_comments_filter.hpp
libs/iostreams/example/tab_expanding_filter.hpp
libs/iostreams/example/unix2dos_filter.hpp
libs/iostreams/src/bzip2.cpp
libs/iostreams/src/file_descriptor.cpp
libs/iostreams/src/mapped_file.cpp
libs/iostreams/src/zlib.cpp
libs/iostreams/test/bzip2_test.cpp
libs/iostreams/test/file_descriptor_test.cpp
libs/iostreams/test/finite_state_filter_test.cpp
libs/iostreams/test/mapped_file_test.cpp
libs/iostreams/test/seekable_file_test.cpp
libs/io/test/ios_state_test.cpp
libs/iterator/doc/BidirectionalTraversal.rst
libs/iterator/doc/counting_iterator.pdf
libs/iterator/doc/counting_iterator.rst
libs/iterator/doc/facade-and-adaptor.pdf
libs/iterator/doc/facade-and-adaptor.rst
libs/iterator/doc/filter_iterator.pdf
libs/iterator/doc/filter_iterator.rst
libs/iterator/doc/ForwardTraversal.rst
libs/iterator/doc/function_output_iterator.pdf
libs/iterator/doc/function_output_iterator.rst
libs/iterator/doc/IncrementableIterator.rst
libs/iterator/doc/index.rst
libs/iterator/doc/indirect_iterator.pdf
libs/iterator/doc/indirect_iterator.rst
libs/iterator/doc/iterator_adaptor.pdf
libs/iterator/doc/iterator_adaptor.rst
libs/iterator/doc/iterator_archetypes.pdf
libs/iterator/doc/iterator_archetypes.rst
libs/iterator/doc/iterator_concepts.pdf
libs/iterator/doc/iterator_concepts.rst
libs/iterator/doc/iterator_facade.pdf
libs/iterator/doc/iterator_facade.rst
libs/iterator/doc/iterator_traits.pdf
libs/iterator/doc/iterator_traits.rst
libs/iterator/doc/LvalueIterator.rst
libs/iterator/doc/new-iter-concepts.pdf
libs/iterator/doc/new-iter-concepts.rst
libs/iterator/doc/permutation_iterator.pdf
libs/iterator/doc/permutation_iterator.rst
libs/iterator/doc/pointee.pdf
libs/iterator/doc/pointee.rst
libs/iterator/doc/RandomAccessTraversal.rst
libs/iterator/doc/ReadableIterator.rst
libs/iterator/doc/reverse_iterator.pdf
libs/iterator/doc/reverse_iterator.rst
libs/iterator/doc/SinglePassIterator.rst
libs/iterator/doc/SwappableIterator.rst
libs/iterator/doc/transform_iterator.pdf
libs/iterator/doc/transform_iterator.rst
libs/iterator/doc/WritableIterator.rst
libs/iterator/doc/zip_iterator.pdf
libs/iterator/doc/zip_iterator.rst
libs/iterator/example/counting_iterator_example.cpp
libs/iterator/example/filter_iterator_example.cpp
libs/iterator/example/indirect_iterator_example.cpp
libs/iterator/example/node_iterator1.cpp
libs/iterator/example/node_iterator2.cpp
libs/iterator/example/node_iterator2.hpp
libs/iterator/example/node_iterator3.cpp
libs/iterator/example/permutation_iter_example.cpp
libs/iterator/example/reverse_iterator_example.cpp
libs/iterator/example/transform_iterator_example.cpp
libs/logic/test/tribool_io_test.cpp
libs/logic/test/tribool_rename_test.cpp
libs/logic/test/tribool_test.cpp
libs/math/octonion/graphics/octonion_blurb17.jpeg
libs/math/octonion/octonion_test.cpp
libs/math/octonion/output_more.txt
libs/math/octonion/output.txt
libs/math/quaternion/HSO3.hpp
libs/math/quaternion/HSO3SO4.cpp
libs/math/quaternion/HSO4.hpp
libs/math/quaternion/output_more.txt
libs/math/quaternion/output.txt
libs/math/quaternion/quaternion_test.cpp
libs/math/quaternion/TQE_EA.pdf
libs/math/quaternion/TQE.pdf
libs/math/special_functions/graphics/special_functions_blurb15.jpeg
libs/math/special_functions/graphics/special_functions_blurb17.jpeg
libs/math/special_functions/graphics/special_functions_blurb18.jpeg
libs/math/special_functions/graphics/special_functions_blurb1.jpeg
libs/math/special_functions/graphics/special_functions_blurb20.jpeg
libs/math/special_functions/graphics/special_functions_blurb22.jpeg
libs/math/special_functions/graphics/special_functions_blurb5.jpeg
libs/math/special_functions/graphics/special_functions_blurb6.jpeg
libs/math/special_functions/graphics/special_functions_blurb7.jpeg
libs/math/special_functions/output_more.txt
libs/math/special_functions/output.txt
libs/math/special_functions/special_functions_test.cpp
libs/math/test/common_factor_test.cpp
libs/math/test/log1p_expm1_test.cpp
libs/mpl/doc/refmanual.pdf
libs/mpl/example/fsm/player1.cpp
libs/multi_array/test/access.cpp
libs/multi_array/test/assign.cpp
libs/multi_array/test/assign_to_array.cpp
libs/multi_array/test/compare.cpp
libs/multi_array/test/concept_checks.cpp
libs/multi_array/test/constructors.cpp
libs/multi_array/test/fail_cbracket.cpp
libs/multi_array/test/fail_cdata.cpp
libs/multi_array/test/fail_citerator.cpp
libs/multi_array/test/fail_cparen.cpp
libs/multi_array/test/fail_criterator.cpp
libs/multi_array/test/fail_csubarray2.cpp
libs/multi_array/test/fail_csubarray3.cpp
libs/multi_array/test/fail_csubarray.cpp
libs/multi_array/test/fail_cview2.cpp
libs/multi_array/test/fail_cview3.cpp
libs/multi_array/test/fail_cview.cpp
libs/multi_array/test/fail_ref_cbracket.cpp
libs/multi_array/test/fail_ref_cdata.cpp
libs/multi_array/test/fail_ref_citerator.cpp
libs/multi_array/test/fail_ref_cparen.cpp
libs/multi_array/test/fail_ref_criterator.cpp
libs/multi_array/test/fail_ref_csubarray2.cpp
libs/multi_array/test/fail_ref_csubarray3.cpp
libs/multi_array/test/fail_ref_csubarray.cpp
libs/multi_array/test/fail_ref_cview2.cpp
libs/multi_array/test/fail_ref_cview3.cpp
libs/multi_array/test/fail_ref_cview.cpp
libs/multi_array/test/generative_tests.hpp
libs/multi_array/test/idxgen1.cpp
libs/multi_array/test/index_bases.cpp
libs/multi_array/test/iterators.cpp
libs/multi_array/test/range1.cpp
libs/multi_array/test/reshape.cpp
libs/multi_array/test/resize.cpp
libs/multi_array/test/slice.cpp
libs/multi_array/test/stl_interaction.cpp
libs/multi_array/test/storage_order.cpp
libs/multi_index/example/basic.cpp
libs/multi_index/example/bimap.cpp
libs/multi_index/example/complex_structs.cpp
libs/multi_index/example/composite_keys.cpp
libs/multi_index/example/hashed.cpp
libs/multi_index/example/memfun_key.cpp
libs/multi_index/example/non_default_ctor.cpp
libs/multi_index/example/random_access.cpp
libs/multi_index/example/rearrange.cpp
libs/multi_index/example/sequenced.cpp
libs/multi_index/example/serialization.cpp
libs/multi_index/perf/test_perf.cpp
libs/multi_index/test/test_basic.cpp
libs/multi_index/test/test_capacity.cpp
libs/multi_index/test/test_comparison.cpp
libs/multi_index/test/test_composite_key.cpp
libs/multi_index/test/test_conv_iterators.cpp
libs/multi_index/test/test_copy_assignment.cpp
libs/multi_index/test/test_hash_ops.cpp
libs/multi_index/test/test_iterators.cpp
libs/multi_index/test/test_key_extractors.cpp
libs/multi_index/test/test_list_ops.cpp
libs/multi_index/test/test_modifiers.cpp
libs/multi_index/test/test_mpl_ops.cpp
libs/multi_index/test/test_observers.cpp
libs/multi_index/test/test_projection.cpp
libs/multi_index/test/test_range.cpp
libs/multi_index/test/test_rearrange.cpp
libs/multi_index/test/test_safe_mode.cpp
libs/multi_index/test/test_serialization1.cpp
libs/multi_index/test/test_serialization2.cpp
libs/multi_index/test/test_set_ops.cpp
libs/multi_index/test/test_special_set_ops.cpp
libs/multi_index/test/test_update.cpp
libs/preprocessor/doc/examples/array_arithmetic.c
libs/preprocessor/doc/examples/catch_builtin.cpp
libs/preprocessor/doc/examples/delay.c
libs/preprocessor/doc/examples/duffs_device.c
libs/preprocessor/doc/examples/is_integral.cpp
libs/preprocessor/doc/examples/linear_fib.c
libs/property_map/example1.cpp
libs/property_map/example3.cpp
libs/ptr_container/test/incomplete_type_test.cpp
libs/ptr_container/test/ptr_array.cpp
libs/ptr_container/test/simple_test.cpp
libs/ptr_container/test/tree_test.cpp
libs/ptr_container/test/view_example.cpp
libs/python/doc/building.rst
libs/python/doc/internals.rst
libs/python/doc/PyConDC_2003/bpl.pdf
libs/python/doc/v2/callbacks.txt
libs/python/example/quickstart/boost-build.jam
libs/python/example/quickstart/extending.cpp
libs/python/example/quickstart/Jamroot
libs/python/example/tutorial/Jamroot
libs/python/test/input_iterator.cpp
libs/python/test/iterator.cpp
libs/python/test/iterator.py
libs/python/test/map_indexing_suite.cpp
libs/python/test/map_indexing_suite.py
libs/python/test/pickle1.cpp
libs/python/test/pickle2.cpp
libs/python/test/pickle3.cpp
libs/python/test/pickle4.cpp
libs/python/test/vector_indexing_suite.cpp
libs/python/test/vector_indexing_suite.py
libs/random/nondet_random_speed.cpp
libs/random/random_demo.cpp
libs/random/random_speed.cpp
libs/random/random_test.cpp
libs/range/test/algorithm_example.cpp
libs/range/test/array.cpp
libs/range/test/iterator_pair.cpp
libs/range/test/iterator_range.cpp
libs/range/test/reversible_range.cpp
libs/range/test/std_container.cpp
libs/range/test/string.cpp
libs/range/test/sub_range.cpp
libs/rational/rational_example.cpp
libs/rational/rational_test.cpp
libs/regex/build/generic.mak
libs/regex/example/grep/grep.cpp
libs/regex/example/snippets/captures_example.cpp
libs/regex/example/snippets/credit_card_example.cpp
libs/regex/example/snippets/partial_regex_grep.cpp
libs/regex/example/snippets/partial_regex_match.cpp
libs/regex/example/snippets/regex_grep_example_1.cpp
libs/regex/example/snippets/regex_grep_example_2.cpp
libs/regex/example/snippets/regex_grep_example_3.cpp
libs/regex/example/snippets/regex_grep_example_4.cpp
libs/regex/example/snippets/regex_iterator_example.cpp
libs/regex/example/snippets/regex_match_example.cpp
libs/regex/example/snippets/regex_merge_example.cpp
libs/regex/example/snippets/regex_replace_example.cpp
libs/regex/example/snippets/regex_search_example.cpp
libs/regex/example/snippets/regex_split_example_1.cpp
libs/regex/example/snippets/regex_split_example_2.cpp
libs/regex/example/snippets/regex_token_iterator_eg_1.cpp
libs/regex/example/snippets/regex_token_iterator_eg_2.cpp
libs/regex/example/timer/regex_timer.cpp
libs/regex/test/captures/captures_test.cpp
libs/regex/test/concepts/concept_check.cpp
libs/regex/test/pathology/bad_expression_test.cpp
libs/regex/test/pathology/recursion_test.cpp
libs/regex/test/regress/basic_tests.cpp
libs/regex/test/regress/main.cpp
libs/regex/test/regress/test_deprecated.cpp
libs/serialization/example/demo_auto_ptr.cpp
libs/serialization/example/demo.cpp
libs/serialization/example/demo_exception.cpp
libs/serialization/example/demo_fast_archive.cpp
libs/serialization/example/demofile.txt
libs/serialization/example/demo_output.txt
libs/serialization/example/demo_pimpl_A.cpp
libs/serialization/example/demo_pimpl.cpp
libs/serialization/example/demo_polymorphic_A.cpp
libs/serialization/example/demo_polymorphic_A.hpp
libs/serialization/example/demo_polymorphic.cpp
libs/serialization/example/demo_portable_archive.cpp
libs/serialization/example/demo_save.xml
libs/serialization/example/demo_shared_ptr.cpp
libs/serialization/example/demo_xml.cpp
libs/serialization/example/demo_xml.hpp
libs/serialization/example/demo_xml_load.cpp
libs/serialization/example/demo_xml_save.cpp
libs/serialization/test/test_delete_pointer.cpp
libs/serialization/test/test_diamond.cpp
libs/serialization/test/test_no_rtti.cpp
libs/signals/example/doc_view.cpp
libs/signals/test/dead_slot_test.cpp
libs/signals/test/deletion_test.cpp
libs/signals/test/ordering_test.cpp
libs/signals/test/signal_n_test.cpp
libs/signals/test/signal_test.cpp
libs/signals/test/trackable_test.cpp
libs/smart_ptr/example/scoped_ptr_example.cpp
libs/smart_ptr/example/scoped_ptr_example.hpp
libs/smart_ptr/example/scoped_ptr_example_test.cpp
libs/smart_ptr/example/shared_ptr_example2.cpp
libs/smart_ptr/example/shared_ptr_example2.hpp
libs/smart_ptr/example/shared_ptr_example2_test.cpp
libs/smart_ptr/example/shared_ptr_example.cpp
libs/smart_ptr/smarttest.zip
libs/smart_ptr/test/pointer_cast_test.cpp
libs/smart_ptr/test/pointer_to_other_test.cpp
libs/smart_ptr/test/smart_ptr_test.cpp
libs/spirit/example/fundamental/ast_calc.cpp
libs/spirit/example/fundamental/bind.cpp
libs/spirit/example/fundamental/calc_debug.cpp
libs/spirit/example/fundamental/calc_plain.cpp
libs/spirit/example/fundamental/comments.cpp
libs/spirit/example/fundamental/distinct/distinct_parser.cpp
libs/spirit/example/fundamental/distinct/distinct_parser_dynamic.cpp
libs/spirit/example/fundamental/error_handling.cpp
libs/spirit/example/fundamental/file_parser.cpp
libs/spirit/example/fundamental/full_calc.cpp
libs/spirit/example/fundamental/functor_parser.cpp
libs/spirit/example/fundamental/list_parser.cpp
libs/spirit/example/fundamental/matching_tags.cpp
libs/spirit/example/fundamental/no_actions.cpp
libs/spirit/example/fundamental/number_list.cpp
libs/spirit/example/fundamental/parser_context.cpp
libs/spirit/example/fundamental/parse_tree_calc1.cpp
libs/spirit/example/fundamental/phoenix_calc.cpp
libs/spirit/example/fundamental/position_iterator/position_iterator.cpp
libs/spirit/example/fundamental/refactoring.cpp
libs/spirit/example/fundamental/regular_expression.cpp
libs/spirit/example/fundamental/roman_numerals.cpp
libs/spirit/example/fundamental/stuff_vector2.cpp
libs/spirit/example/fundamental/stuff_vector.cpp
libs/spirit/example/fundamental/subrule_calc.cpp
libs/spirit/example/fundamental/sum.cpp
libs/spirit/example/fundamental/thousand_separated.cpp
libs/spirit/example/intermediate/lazy_parser.cpp
libs/spirit/example/intermediate/parameters.cpp
libs/spirit/example/techniques/multiple_scanners.cpp
libs/spirit/example/techniques/nabialek.cpp
libs/spirit/example/techniques/no_rules/no_rule1.cpp
libs/spirit/example/techniques/no_rules/no_rule2.cpp
libs/spirit/example/techniques/no_rules/no_rule3.cpp
libs/spirit/example/techniques/typeof.cpp
libs/statechart/doc/rationale.pdf
libs/statechart/doc/reference.pdf
libs/statechart/doc/tutorial.pdf
libs/statechart/test/TuTest.cpp
libs/statechart/test/TuTest.hpp
libs/statechart/test/TuTestMain.cpp
libs/static_assert/static_assert_example_1.cpp
libs/static_assert/static_assert_example_2.cpp
libs/static_assert/static_assert_example_3.cpp
libs/static_assert/static_assert_test.cpp
libs/static_assert/static_assert_test_fail_1.cpp
libs/static_assert/static_assert_test_fail_2.cpp
libs/static_assert/static_assert_test_fail_3.cpp
libs/static_assert/static_assert_test_fail_4.cpp
libs/static_assert/static_assert_test_fail_5.cpp
libs/static_assert/static_assert_test_fail_6.cpp
libs/static_assert/static_assert_test_fail_7.cpp
libs/static_assert/static_assert_test_fail_8.cpp
libs/static_assert/static_assert_test_fail_9.cpp
libs/test/build/msvc71_proj/prg_exec_monitor_dll.vcproj
libs/test/build/msvc71_proj/prg_exec_monitor.vcproj
libs/test/build/msvc71_proj/unit_test_framework_dll.vcproj
libs/test/build/msvc71_proj/unit_test_framework.vcproj
libs/test/doc/tutorials/const_string.hpp
libs/test/doc/tutorials/const_string_test.cpp
libs/test/example/exec_mon_example.cpp
libs/test/example/prg_exec_example.cpp
libs/test/example/test_case_template_example.cpp
libs/test/example/unit_test_example_01.cpp
libs/test/example/unit_test_example_02.cpp
libs/test/example/unit_test_example_03.cpp
libs/test/example/unit_test_example_04.cpp
libs/test/example/unit_test_example_05.cpp
libs/test/src/compiler_log_formatter.cpp
libs/test/src/cpp_main.cpp
libs/test/src/exception_safety.cpp
libs/test/src/execution_monitor.cpp
libs/test/src/framework.cpp
libs/test/src/interaction_based.cpp
libs/test/src/logged_expectations.cpp
libs/test/src/plain_report_formatter.cpp
libs/test/src/progress_monitor.cpp
libs/test/src/results_collector.cpp
libs/test/src/results_reporter.cpp
libs/test/src/test_tools.cpp
libs/test/src/unit_test_log.cpp
libs/test/src/unit_test_main.cpp
libs/test/src/unit_test_monitor.cpp
libs/test/src/unit_test_parameters.cpp
libs/test/src/unit_test_suite.cpp
libs/test/src/xml_log_formatter.cpp
libs/test/src/xml_report_formatter.cpp
libs/test/test/custom_exception_test.cpp
libs/test/test/errors_handling_test.cpp
libs/test/test/minimal_test.cpp
libs/test/test/online_test.cpp
libs/test/test/output_test_stream_test.cpp
libs/test/test/parameterized_test_test.cpp
libs/test/test/prg_exec_fail1.cpp
libs/test/test/prg_exec_fail2.cpp
libs/test/test/prg_exec_fail3.cpp
libs/test/test/prg_exec_fail4.cpp
libs/test/test/result_report_test.cpp
libs/test/test/test_case_template_test.cpp
libs/test/test/test_files/errors_handling_test.pattern
libs/test/test/test_files/result_report_test.pattern
libs/test/test/test_fp_comparisons.cpp
libs/test/test/test_tools_test.cpp
libs/timer/timer_test.cpp
libs/type_traits/examples/copy_example.cpp
libs/type_traits/examples/fill_example.cpp
libs/type_traits/examples/iter_swap_example.cpp
libs/type_traits/examples/trivial_destructor_example.cpp
libs/utility/addressof_test.cpp
libs/utility/base_from_member_test.cpp
libs/utility/call_traits_test.cpp
libs/utility/iterators_test.cpp
libs/utility/noncopyable_test.cpp
libs/utility/operators_test.cpp
libs/utility/shared_iterator_example1.cpp
libs/utility/shared_iterator_example2.cpp
libs/utility/shared_iterator_example3.cpp
libs/wave/ChangeLog
LICENSE_1_0.txt
more/blanket-permission.txt
more/favicon.ico
more/lib_guide.htm
more/proposal.pdf
tools/build/v2/doc/userman.pdf
tools/build/v2/hacking.txt
tools/inspect/build/Jamfile.v2
tools/inspect/inspect.cpp
tools/inspect/inspector.hpp
tools/inspect/link_check.cpp
tools/inspect/link_check.hpp
tools/inspect/long_name_check.cpp
tools/inspect/long_name_check.hpp
tools/inspect/tab_check.cpp
tools/inspect/tab_check.hpp
tools/quickbook/doc/quickbook.qbk
tools/regression/build/Jamfile.v2
tools/regression/compiler_status.cpp
tools/regression/process_jam_log.cpp

View File

@ -1,38 +0,0 @@
---
boost/detail/sp_counted_base_gcc_ppc.hpp | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
Index: boost_1_33_1/boost/detail/sp_counted_base_gcc_ppc.hpp
===================================================================
--- boost_1_33_1.orig/boost/detail/sp_counted_base_gcc_ppc.hpp 2005-08-24 19:15:49.000000000 +0200
+++ boost_1_33_1/boost/detail/sp_counted_base_gcc_ppc.hpp 2008-01-16 02:09:40.000000000 +0100
@@ -46,7 +46,7 @@ inline void atomic_increment( int * pw )
"stwcx. %1, 0, %2\n\t"
"bne- 0b":
- "=m"( *pw ), "=&b"( tmp ):
+ "+m"( *pw ), "=&b"( tmp ):
"r"( pw ):
"cc"
);
@@ -68,9 +68,9 @@ inline int atomic_decrement( int * pw )
"bne- 0b\n\t"
"isync":
- "=m"( *pw ), "=&b"( rv ):
+ "+m"( *pw ), "=&b"( rv ):
"r"( pw ):
- "memory", "cc"
+ "cc"
);
return rv;
@@ -94,7 +94,7 @@ inline int atomic_conditional_increment(
"stwcx. %1, 0, %2\n\t"
"bne- 0b":
- "=m"( *pw ), "=&b"( rv ):
+ "+m"( *pw ), "=&b"( rv ):
"r"( pw ):
"cc"
);