• KennyTM~'s avatar
    Allow the ZMQ_MONITOR code compilable on gcc 4.7 on Linux. · c995de65
    KennyTM~ authored
    The current ZMQ_MONITOR code does not compile in gcc 4.7, as -pedantic
    and -Werror are enabled, and ISO C++ doesn't allow casting between
    normal pointers (void*) and function pointers, as pedantically their
    size could be different. This caused the library not compilable. This
    commit workaround the problem by introducing one more indirection, i.e.
    instead of calling
    
        (void *)listener
    
    which is an error, we have to use
    
        *(void **)&listener
    
    which is an undefined behavior :) but works on most platforms
    
    Also, `optval_ = monitor` will not set the parameter in getsockopt(),
    and the extra casting caused the LHS to be an rvalue which again makes
    the code not compilable. The proper way is to pass a pointer of function
    pointer and assign with indirection, i.e. `*optval_ = monitor`.
    
    Also, fixed an asciidoc error in zmq_getsockopt.txt because the `~~~~`
    is too long.
    c995de65
zmq_getsockopt.txt 18.6 KB