You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@qpid.apache.org by "ASF GitHub Bot (JIRA)" <ji...@apache.org> on 2018/04/09 21:10:00 UTC

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

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

ASF GitHub Bot commented on QPID-7926:
--------------------------------------

GitHub user alanconway opened a pull request:

    https://github.com/apache/qpid-cpp/pull/13

    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

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/alanconway/qpid-cpp winfix

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/qpid-cpp/pull/13.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #13
    
----
commit e078f320b656fb1b5c79b3a9e490fca23e4d03f7
Author: Justin Ross <jr...@...>
Date:   2018-03-28T13:40:03Z

    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
>            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