qpid-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF subversion and git services (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (QPID-7926) [c++ broker] Windows build error "cannot convert from 'int' to 'qpid::sys::PODMutex"
Date Tue, 10 Apr 2018 21:16:00 GMT

    [ https://issues.apache.org/jira/browse/QPID-7926?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16432999#comment-16432999
] 

ASF subversion and git services commented on QPID-7926:
-------------------------------------------------------

Commit 9f823d4df8346e9bf91faeaeeba7896a3a5d332b in qpid-cpp's branch refs/heads/master from
[~jross@redhat.com]
[ https://git-wip-us.apache.org/repos/asf?p=qpid-cpp.git;h=9f823d4 ]

QPID-7926: [c++ broker] Windows build error "cannot convert from 'int' to 'qpid::sys::PODMutex'"

Renamed PODMutex as GlobalMutex. The important point is that it can be used as a
global variable. In POSIX we use a POD class and static initializer to acomplish
this, but on windows we use boost::recursive_mutex, which is documented as being
safe for use as a global variable.

Modified the QPID_MUTEX_INITIALIZER macro to be empty on windows and '= { 0 }'
on POSIX.

This closes #11


> [c++ broker] Windows build error "cannot convert from 'int' to 'qpid::sys::PODMutex"
> ------------------------------------------------------------------------------------
>
>                 Key: QPID-7926
>                 URL: https://issues.apache.org/jira/browse/QPID-7926
>             Project: Qpid
>          Issue Type: Bug
>          Components: C++ Broker
>    Affects Versions: qpid-cpp-1.36.0
>         Environment: Windows Server 2012 R2, Visual Studio 2012, x64 build
> Today's master branch
>            Reporter: Chuck Rolke
>            Assignee: Chuck Rolke
>            Priority: Major
>
> {noformat}
> 1>------ Build started: Project: qpidcommon, Configuration: Debug x64 ------
> 1>  Logger.cpp
> 1>D:\Users\crolke\git\qpid-cpp\src\qpid\log\Logger.cpp(48): error C2440: 'initializing'
: cannot convert from 'int' to 'qpid::sys::PODMutex'
> 1>          No constructor could take the source type, or constructor overload resolution
was ambiguous
> {noformat}
> The issue is with the definition of QPID_MUTEX_INITIALIZER.
> In Linux it is defined as PTHREAD_MUTEX_INITIALIZER which is a complex structure initializer.
> In Windows it is a naked 0.
> In a stand-alone windows program
> {noformat}
> std::is_pod<PODMutex>::value
> {noformat}
> returns false. In Linux the same statement in qpidd broker returns true.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@qpid.apache.org
For additional commands, e-mail: dev-help@qpid.apache.org


Mime
View raw message