Compile error with sip 6.7.10 - variable number of arguments
Scott Talbert
swt at techie.net
Tue Jul 25 16:23:59 BST 2023
Hi Phil,
Sorry I didn't get a chance to test the prerelease of sip 6.7.10 with
wxPython. Unfortunately, I'm running into a compile issue with 6.7.10.
In file included from /usr/include/python3.11/Python.h:38,
from ../../../../sip/siplib/sip.h:24,
from ../../../../sip/cpp/sipAPI_core.h:13,
from ../../../../sip/cpp/sip_corecmodule.cpp:10:
../../../../sip/cpp/sip_corecmodule.cpp: In function ‘PyObject*
func_LogInfo(PyObject*, PyObject*)’:
../../../../sip/cpp/sip_corecmodule.cpp:15761:23: error: ‘a1’ was not
declared in this scope; did you mean ‘y1’?
15761 | Py_DECREF(a1);
| ^~
/usr/include/python3.11/pyport.h:24:38: note: in definition of macro
‘_Py_CAST’
24 | #define _Py_CAST(type, expr) ((type)(expr))
| ^~~~
/usr/include/python3.11/object.h:541:33: note: in expansion of macro
‘_PyObject_CAST’
541 | #define Py_DECREF(op) Py_DECREF(_PyObject_CAST(op))
| ^~~~~~~~~~~~~~
../../../../sip/cpp/sip_corecmodule.cpp:15761:13: note: in expansion of
macro ‘Py_DECREF’
15761 | Py_DECREF(a1);
| ^~~~~~~~~
This error occurs in a function called wxLogInfo which is defined in a
.sip file like this:
void wxLogInfo(
const char * formatString,
...
);
%Docstring
LogInfo(formatString, )
For low priority messages.
%End
SIP 6.7.9 generated code:
extern "C" {static PyObject *func_LogInfo(PyObject *,PyObject *);}
static PyObject *func_LogInfo(PyObject *,PyObject *sipArgs)
{
PyObject *sipParseErr = SIP_NULLPTR;
{
const char* formatString;
PyObject * a1;
if (sipParseArgs(&sipParseErr, sipArgs, "sW", &formatString, &a1))
{
PyErr_Clear();
Py_BEGIN_ALLOW_THREADS
wxLogInfo(formatString,a1);
Py_END_ALLOW_THREADS
Py_DECREF(a1);
if (PyErr_Occurred())
return 0;
Py_INCREF(Py_None);
return Py_None;
}
}
/* Raise an exception if the arguments couldn't be parsed. */
sipNoFunction(sipParseErr, sipName_LogInfo, SIP_NULLPTR);
return SIP_NULLPTR;
}
SIP 6.7.10 generated code:
extern "C" {static PyObject *func_LogInfo(PyObject *,PyObject *);}
static PyObject *func_LogInfo(PyObject *,PyObject *sipArgs)
{
PyObject *sipParseErr = SIP_NULLPTR;
{
const char* formatString;
PyObject * *args;
if (sipParseArgs(&sipParseErr, sipArgs, "sW", &formatString, &*args))
{
PyErr_Clear();
Py_BEGIN_ALLOW_THREADS
wxLogInfo(formatString,*args);
Py_END_ALLOW_THREADS
Py_DECREF(a1);
if (PyErr_Occurred())
return 0;
Py_INCREF(Py_None);
return Py_None;
}
}
/* Raise an exception if the arguments couldn't be parsed. */
sipNoFunction(sipParseErr, sipName_LogInfo, SIP_NULLPTR);
return SIP_NULLPTR;
}
Looks like a1 got renamed but not completely?
Thanks,
Scott
More information about the PyQt
mailing list