Opened 8 years ago

#10264 new Bugs

[smart_ptr] AIX 6.1 bug with sched_yield() function out of scope

Reported by: Axel Ismirlian <axel.ismirlian@…> Owned by: Peter Dimov
Milestone: To Be Determined Component: smart_ptr
Version: Boost 1.55.0 Severity: Problem
Keywords: Cc:

Description

The error that pops up in some of the lambda tests is the following:

../libs/lambda/test/algorithm_test.cpp:37:48: error: reference to 'var' is ambiguous

protect((_1 = var(sum), ++var(sum)))));

In file included from /usr/include/sys/thread.h:37:0,

from /usr/include/sys/ptrace.h:28, from /usr/include/sys/proc.h:42, from /usr/include/sys/pri.h:43, from /usr/include/sys/sched.h:38, from /usr/include/sched.h:51, from ../boost/smart_ptr/detail/yield_k.hpp:101, from ../boost/smart_ptr/detail/spinlock_sync.hpp:18, from ../boost/smart_ptr/detail/spinlock.hpp:50, from ../boost/smart_ptr/detail/spinlock_pool.hpp:25, from ../boost/smart_ptr/shared_ptr.hpp:34, from ../boost/shared_ptr.hpp:17, from ../boost/test/utils/callback.hpp:21, from ../boost/test/execution_monitor.hpp:38, from ../boost/test/impl/execution_monitor.ipp:30, from ../boost/test/minimal.hpp:37, from ../libs/lambda/test/algorithm_test.cpp:14:

/usr/include/sys/var.h:59:8: note: candidates are: struct var

struct var {

In file included from ../boost/lambda/core.hpp:53:0,

from ../boost/lambda/lambda.hpp:14, from ../libs/lambda/test/algorithm_test.cpp:16:

../boost/lambda/detail/lambda_functor_base.hpp:66:19: note: template<class T> boost::lambda::lambda_functor<T> boost::lambda::var(const boost::lambda::lambda_functor<T>&)

lambda_functor<T> var(const lambda_functor<T>& t) { return t; }

../boost/lambda/detail/lambda_functor_base.hpp:60:38: note: template<class T> boost::lambda::lambda_functor<boost::lambda::identity<T&> > boost::lambda::var(T&)

inline lambda_functor<identity<T&> > var(T& t) { return identity<T&>(t); }

In ../boost/lambda/detail/lambda_functor_base.hpp there is variable called var that conflicts with an AIX system variable. Defining var and later undefining it frees that variable name. However, the fix I propose is in the smart_ptr function.

Please look at the Pull Request created for further details: https://github.com/boostorg/smart_ptr/pull/7

Change History (0)

Note: See TracTickets for help on using tickets.