Skip to content

Commit

Permalink
util: silence printf format compiler warnings (Python ssize_t)
Browse files Browse the repository at this point in the history
On some platforms PY_FORMAT_SIZE_T seems to be ineffective, resulting in
compiler warnings about printf format data type mismatches (observed in
MXE builds).

Silence the warnings. Prefer the ssize_t data type instead which we know
the printf format of, reliably.
  • Loading branch information
gsigh committed Nov 24, 2022
1 parent dcf512b commit 02cc30b
Showing 1 changed file with 9 additions and 7 deletions.
16 changes: 9 additions & 7 deletions util.c
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ SRD_PRIV int py_attr_as_str(PyObject *py_obj, const char *attr, char **outstr)
SRD_PRIV int py_attr_as_strlist(PyObject *py_obj, const char *attr, GSList **outstrlist)
{
PyObject *py_list;
Py_ssize_t i;
ssize_t idx;
int ret;
char *outstr;
PyGILState_STATE gstate;
Expand All @@ -139,10 +139,10 @@ SRD_PRIV int py_attr_as_strlist(PyObject *py_obj, const char *attr, GSList **out

*outstrlist = NULL;

for (i = 0; i < PyList_Size(py_list); i++) {
ret = py_listitem_as_str(py_list, i, &outstr);
for (idx = 0; idx < PyList_Size(py_list); idx++) {
ret = py_listitem_as_str(py_list, idx, &outstr);
if (ret < 0) {
srd_dbg("Couldn't get item %" PY_FORMAT_SIZE_T "d.", i);
srd_dbg("Couldn't get item %zd.", idx);
goto err;
}
*outstrlist = g_slist_append(*outstrlist, outstr);
Expand Down Expand Up @@ -217,8 +217,9 @@ SRD_PRIV int py_dictitem_as_str(PyObject *py_obj, const char *key,
SRD_PRIV int py_listitem_as_str(PyObject *py_obj, Py_ssize_t idx,
char **outstr)
{
PyObject *py_value;
PyGILState_STATE gstate;
ssize_t item_idx;
PyObject *py_value;

gstate = PyGILState_Ensure();

Expand All @@ -227,8 +228,9 @@ SRD_PRIV int py_listitem_as_str(PyObject *py_obj, Py_ssize_t idx,
goto err;
}

if (!(py_value = PyList_GetItem(py_obj, idx))) {
srd_dbg("Couldn't get list item %" PY_FORMAT_SIZE_T "d.", idx);
item_idx = idx;
if (!(py_value = PyList_GetItem(py_obj, item_idx))) {
srd_dbg("Couldn't get list item %zd.", item_idx);
goto err;
}

Expand Down

0 comments on commit 02cc30b

Please sign in to comment.