[PyQt] ANN: SIP v4.15.1 Released

Phil Thompson phil at riverbankcomputing.com
Wed Nov 20 08:27:45 GMT 2013


On Wed, 20 Nov 2013 00:17:20 +0100, Hans-Peter Jansen <hpj at urpla.net>
wrote:
> On Dienstag, 19. November 2013 15:34:11 Phil Thompson wrote:
>> On Tue, 19 Nov 2013 15:52:01 +0100, Hans-Peter Jansen <hpj at urpla.net>
>> 
>> wrote:
>> > Dear Phil,
>> > 
>> > On Samstag, 24. August 2013 22:30:16 Hans-Peter Jansen wrote:
>> >> On Freitag, 23. August 2013 18:44:38 Phil Thompson wrote:
>> >> > SIP v4.15.1 has been released. This fixes a regression in v4.15
>> >> > related to
>> >> > the handling of hidden virtual methods. PyQt is unaffected.
>> >> 
>> >> Well, but PyQt3 is:
> 
> [...]
> 
>> 
>> It's probably missing reimplementations in the .sip files.
> 
> Okay, I got around this one, only to be fenced with next issue:
> 
> [   82s] g++ -c -pipe -fmessage-length=0 -O2 -Wall -D_FORTIFY_SOURCE=2
> -fstack-protector -funwind-tables -fasynchronous-unwind-tables -g
> -DUSE_LIB64_PATHES -fno-strict-aliasing -fPIC -fmessage-length=0 -O2
-Wall
> -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables
> -fasynchronous-unwind-tables -g -DUSE_LIB64_PATHES -fno-strict-aliasing
> -Wall -W -D_REENTRANT -DNDEBUG -DQT_NO_DEBUG -DQT_THREAD_SUPPORT -I.
> -I/usr/include/ -I/usr/include/python2.7 -I/usr/lib/qt3/mkspecs/default
> -I/usr/lib/qt3/include -I/usr/X11R6/include -o sipqtnetworkQFtp.o
> sipqtnetworkQFtp.cpp
> 
> resulting in
> 
> [   83s] In file included from sip/qtnetwork/qftp.sip:45:0:
> [   83s] /usr/lib/qt3/include/qftp.h: In member function 'virtual bool
> sipQFtp::checkConnection(QNetworkOperation*)':
> [   83s] /usr/lib/qt3/include/qftp.h:171:10: error: 'virtual bool
> QFtp::checkConnection(QNetworkOperation*)' is private
> [   83s] qtnetwork/sipqtnetworkQFtp.cpp:386:40: error: within this
context
> 
> Hmm.
> 
> checkConnection is defined in sip/qt/qnetworkprotocol.sip as a protected
> method of QNetworkProtocol class:
> 
>         virtual bool checkConnection(QNetworkOperation *);
> 
> 
> Obviously sip is being aware of this matter, as it handles it in a
special
> way.
> It creates in qtnetwork/sipqtnetworkQFtp.cpp:
> 
>     bool sipProtectVirt_checkConnection(bool,QNetworkOperation *);
> 
> 
> bool sipQFtp::sipProtectVirt_checkConnection(bool
> sipSelfWasArg,QNetworkOperation *a0)
> {
>     return (sipSelfWasArg ? QNetworkProtocol::checkConnection(a0) :
>     checkConnection(a0));
> }
> 
> 
> But the question is, why does the compiler complain on this method: 
> 
> bool sipQFtp::checkConnection(QNetworkOperation *a0)
> {   
>     sip_gilstate_t sipGILState;
>     PyObject *sipMeth;
>     
>     sipMeth =
>    
sipIsPyMethod(&sipGILState,&sipPyMethods[10],sipPySelf,NULL,sipName_checkConnection);
>     
>     if (!sipMeth)
> ==>     return QFtp::checkConnection(a0);
> 
>     typedef bool (*sipVH_qt_180)(sip_gilstate_t,
sipVirtErrorHandlerFunc,
>     sipSimpleWrapper *, PyObject *, QNetworkOperation *);
> 
>     return
>    
((sipVH_qt_180)(sipModuleAPI_qtnetwork_qt->em_virthandlers[180]))(sipGILState,
>     0, sipPySelf, sipMeth, a0);
> }
> 
> 
> and even more interesting, what could be done to avoid this issue?
> 
> I'm lost again.
> 
> Another idea would be GREAT.

Again, probably a missing (private this time) reimplementation.

Phil


More information about the PyQt mailing list