Troubleshooting sip assignHelper != NULL assertion

Phil Thompson phil at riverbankcomputing.com
Thu May 28 15:45:24 BST 2020


On 28/05/2020 15:18, Scott Talbert wrote:
> Hi,
> 
> I'm running into the following assertion in wxPython that I don't
> quite understand:
> 
> python3: ../../../../sip/siplib/siplib.c:3444: parseResult: Assertion
> `assign_helper != NULL' failed.
> 
> This is the relevant C++ class:
> 
> class wxPGWindowList
> {
> public:
>     wxPGWindowList(wxWindow* primary, wxWindow* secondary = NULL)
>         : m_primary(primary)
>         , m_secondary(secondary)
>     {
>     }
> 
>     void SetSecondary(wxWindow* secondary) { m_secondary = secondary; }
> 
>     wxWindow* GetPrimary() const { return m_primary; }
>     wxWindow* GetSecondary() const { return m_secondary; }
> 
>     wxWindow*   m_primary;
>     wxWindow*   m_secondary;
> };

It doesn't matter what the C++ class looks like, it's the corresponding 
.sip that would be of interest.

> The assertion occurs when trying to return an instance of
> wxPGWindowList in a Python method, e.g.:
> 
> def foo():
>     return wxpg.PGWindowList(a, b)
> 
> From what I can tell, there is no assignment helper assigned by sip
> because there is no default constructor?  I may be missing something,
> but I can't see why a default constructor would be needed.

You don't say what version of the sip module you are using but I'm 
guessing that that assertion is when it's parsing the Python object 
returned by a re-implementation of a C++ virtual. That doesn't seem to 
be happening in the above which suggests things aren't happening where 
you think they are.

Phil


More information about the PyQt mailing list