95 static PyObject *
96 HunSpell_analyze(HunSpell * self, PyObject *args)
97 {
98 char *word, **slist;
99 int i, num_slist;
100 PyObject *slist_list;
101
102 if (!PyArg_ParseTuple(args, "s", &word))
when PyArg_ParseTuple() succeeds
taking False path
103 return NULL;
104
105 slist_list = PyList_New(0);
when PyList_New() succeeds
106 num_slist = Hunspell_analyze(self->handle, &slist, word);
107
108 for (i = 0; i < num_slist; i++) {
when considering range: 1 <= value <= 0x7fffffff
taking True path
when considering value == (int)1 from hunspell.c:106
taking False path
109 PyList_Append(slist_list, Py_BuildValue("s", slist[i]));
when treating unknown char * * from hunspell.c:109 as non-NULL
when Py_BuildValue() succeeds
when PyList_Append() succeeds
new ref from call to Py_BuildValue allocated at: PyList_Append(slist_list, Py_BuildValue("s", slist[i]));
ob_refcnt is now refs: 1 + N where N >= 0
ob_refcnt is now refs: 2 + N where N >= 0
new ref from call to Py_BuildValue is now referenced by 1 non-stack value(s): PyListObject.ob_item[0]
110 }
111
112 Hunspell_free_list(self->handle, &slist, num_slist);
113 return slist_list;
114 }
ob_refcnt of new ref from call to Py_BuildValue is 1 too high
was expecting final ob_refcnt to be N + 1 (for some unknown N)
due to object being referenced by: PyListObject.ob_item[0]
but final ob_refcnt is N + 2
found 1 similar trace(s) to this