File: src/lib/fm-pyfontutils.c
Function: FT_Get_File_Info
Error: ob_refcnt of PyStringObject is 1 too high
175 static PyObject *
176 FT_Get_File_Info(PyObject *self, PyObject *args)
177 {
178     FT_Error        error;
179     int             index = 0;
180     char           *filepath = NULL;
181     PyObject        *fileinfo = PyDict_New();
when PyDict_New() succeeds
182     FontInfo       *fontinfo, f;
183 
184     if (!PyArg_ParseTuple(args, "s|i:FT_Get_File_Info", &filepath, &index))
when PyArg_ParseTuple() succeeds
taking False path
185         return NULL;
186 
187     fontinfo = &f;
188     fontinfo_init(fontinfo);
189 
190     error = FT_Get_Font_Info(fontinfo, filepath, index);
191     if (error)
when considering value == (FT_Error)0 from src/lib/fm-pyfontutils.c:190
taking False path
192     {
193         char *err;
194         err = g_strdup_printf("Failed to load font! : '%s'", filepath);
195         PyErr_SetString(PyExc_EnvironmentError, err);
196         g_free_and_nullify(err);
197         fontinfo_destroy(fontinfo);
198         return NULL;
199     }
200 
201     /* A for loop would have been nice... */
202     PyDict_SetStringItem(fileinfo, "owner", fontinfo->owner);
when treating unknown char * from src/lib/fm-pyfontutils.c:202 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
PyStringObject allocated at:     PyDict_SetStringItem(fileinfo, "owner", fontinfo->owner);
ob_refcnt is now refs: 1 + N where N >= 0
ob_refcnt is now refs: 1 + N where N >= 1
203     PyDict_SetStringItem(fileinfo, "filepath", fontinfo->filepath);
when treating unknown char * from src/lib/fm-pyfontutils.c:203 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
204     PyDict_SetStringItem(fileinfo, "filetype", fontinfo->filetype);
when treating unknown char * from src/lib/fm-pyfontutils.c:204 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
205     PyDict_SetStringItem(fileinfo, "filesize", fontinfo->filesize);
when treating unknown char * from src/lib/fm-pyfontutils.c:205 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
206     PyDict_SetStringItem(fileinfo, "checksum", fontinfo->checksum);
when treating unknown char * from src/lib/fm-pyfontutils.c:206 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
207     PyDict_SetStringItem(fileinfo, "psname", fontinfo->psname);
when treating unknown char * from src/lib/fm-pyfontutils.c:207 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
208     PyDict_SetStringItem(fileinfo, "family", fontinfo->family);
when treating unknown char * from src/lib/fm-pyfontutils.c:208 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
209     PyDict_SetStringItem(fileinfo, "style", fontinfo->style);
when treating unknown char * from src/lib/fm-pyfontutils.c:209 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
210     PyDict_SetStringItem(fileinfo, "foundry", fontinfo->foundry);
when treating unknown char * from src/lib/fm-pyfontutils.c:210 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
211     PyDict_SetStringItem(fileinfo, "copyright", fontinfo->copyright);
when treating unknown char * from src/lib/fm-pyfontutils.c:211 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
212     PyDict_SetStringItem(fileinfo, "version", fontinfo->version);
when treating unknown char * from src/lib/fm-pyfontutils.c:212 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
213     PyDict_SetStringItem(fileinfo, "description", fontinfo->description);
when treating unknown char * from src/lib/fm-pyfontutils.c:213 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
214     PyDict_SetStringItem(fileinfo, "license", fontinfo->license);
when treating unknown char * from src/lib/fm-pyfontutils.c:214 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
215     PyDict_SetStringItem(fileinfo, "license_url", fontinfo->license_url);
when treating unknown char * from src/lib/fm-pyfontutils.c:215 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
216     PyDict_SetStringItem(fileinfo, "panose", fontinfo->panose);
when treating unknown char * from src/lib/fm-pyfontutils.c:216 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
217     PyDict_SetStringItem(fileinfo, "face", fontinfo->face);
when treating unknown char * from src/lib/fm-pyfontutils.c:217 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
218     PyDict_SetStringItem(fileinfo, "pfamily", fontinfo->pfamily);
when treating unknown char * from src/lib/fm-pyfontutils.c:218 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
219     PyDict_SetStringItem(fileinfo, "pstyle", fontinfo->pstyle);
when treating unknown char * from src/lib/fm-pyfontutils.c:219 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
220     PyDict_SetStringItem(fileinfo, "pvariant", fontinfo->pvariant);
when treating unknown char * from src/lib/fm-pyfontutils.c:220 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
221     PyDict_SetStringItem(fileinfo, "pweight", fontinfo->pweight);
when treating unknown char * from src/lib/fm-pyfontutils.c:221 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() fails
222     PyDict_SetStringItem(fileinfo, "pstretch", fontinfo->pstretch);
when treating unknown char * from src/lib/fm-pyfontutils.c:222 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
223     PyDict_SetStringItem(fileinfo, "pdescr", fontinfo->pdescr);
when treating unknown char * from src/lib/fm-pyfontutils.c:223 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
224 
225     fontinfo_destroy(fontinfo);
226 
227     return fileinfo;
228 }
ob_refcnt of PyStringObject is 1 too high
was expecting final ob_refcnt to be N + 0 (for some unknown N)
but final ob_refcnt is N + 1
found 263 similar trace(s) to this

File: src/lib/fm-pyfontutils.c
Function: FT_Get_File_Info
Error: calling PyDict_SetItem with NULL as argument 2 (D.25555) at src/lib/fm-pyfontutils.c:223
175 static PyObject *
176 FT_Get_File_Info(PyObject *self, PyObject *args)
177 {
178     FT_Error        error;
179     int             index = 0;
180     char           *filepath = NULL;
181     PyObject        *fileinfo = PyDict_New();
when PyDict_New() succeeds
182     FontInfo       *fontinfo, f;
183 
184     if (!PyArg_ParseTuple(args, "s|i:FT_Get_File_Info", &filepath, &index))
when PyArg_ParseTuple() succeeds
taking False path
185         return NULL;
186 
187     fontinfo = &f;
188     fontinfo_init(fontinfo);
189 
190     error = FT_Get_Font_Info(fontinfo, filepath, index);
191     if (error)
when considering value == (FT_Error)0 from src/lib/fm-pyfontutils.c:190
taking False path
192     {
193         char *err;
194         err = g_strdup_printf("Failed to load font! : '%s'", filepath);
195         PyErr_SetString(PyExc_EnvironmentError, err);
196         g_free_and_nullify(err);
197         fontinfo_destroy(fontinfo);
198         return NULL;
199     }
200 
201     /* A for loop would have been nice... */
202     PyDict_SetStringItem(fileinfo, "owner", fontinfo->owner);
when treating unknown char * from src/lib/fm-pyfontutils.c:202 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
203     PyDict_SetStringItem(fileinfo, "filepath", fontinfo->filepath);
when treating unknown char * from src/lib/fm-pyfontutils.c:203 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
204     PyDict_SetStringItem(fileinfo, "filetype", fontinfo->filetype);
when treating unknown char * from src/lib/fm-pyfontutils.c:204 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
205     PyDict_SetStringItem(fileinfo, "filesize", fontinfo->filesize);
when treating unknown char * from src/lib/fm-pyfontutils.c:205 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
206     PyDict_SetStringItem(fileinfo, "checksum", fontinfo->checksum);
when treating unknown char * from src/lib/fm-pyfontutils.c:206 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
207     PyDict_SetStringItem(fileinfo, "psname", fontinfo->psname);
when treating unknown char * from src/lib/fm-pyfontutils.c:207 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
208     PyDict_SetStringItem(fileinfo, "family", fontinfo->family);
when treating unknown char * from src/lib/fm-pyfontutils.c:208 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
209     PyDict_SetStringItem(fileinfo, "style", fontinfo->style);
when treating unknown char * from src/lib/fm-pyfontutils.c:209 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
210     PyDict_SetStringItem(fileinfo, "foundry", fontinfo->foundry);
when treating unknown char * from src/lib/fm-pyfontutils.c:210 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
211     PyDict_SetStringItem(fileinfo, "copyright", fontinfo->copyright);
when treating unknown char * from src/lib/fm-pyfontutils.c:211 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
212     PyDict_SetStringItem(fileinfo, "version", fontinfo->version);
when treating unknown char * from src/lib/fm-pyfontutils.c:212 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
213     PyDict_SetStringItem(fileinfo, "description", fontinfo->description);
when treating unknown char * from src/lib/fm-pyfontutils.c:213 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
214     PyDict_SetStringItem(fileinfo, "license", fontinfo->license);
when treating unknown char * from src/lib/fm-pyfontutils.c:214 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
215     PyDict_SetStringItem(fileinfo, "license_url", fontinfo->license_url);
when treating unknown char * from src/lib/fm-pyfontutils.c:215 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
216     PyDict_SetStringItem(fileinfo, "panose", fontinfo->panose);
when treating unknown char * from src/lib/fm-pyfontutils.c:216 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
217     PyDict_SetStringItem(fileinfo, "face", fontinfo->face);
when treating unknown char * from src/lib/fm-pyfontutils.c:217 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
218     PyDict_SetStringItem(fileinfo, "pfamily", fontinfo->pfamily);
when treating unknown char * from src/lib/fm-pyfontutils.c:218 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
219     PyDict_SetStringItem(fileinfo, "pstyle", fontinfo->pstyle);
when treating unknown char * from src/lib/fm-pyfontutils.c:219 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
220     PyDict_SetStringItem(fileinfo, "pvariant", fontinfo->pvariant);
when treating unknown char * from src/lib/fm-pyfontutils.c:220 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
221     PyDict_SetStringItem(fileinfo, "pweight", fontinfo->pweight);
when treating unknown char * from src/lib/fm-pyfontutils.c:221 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() fails
222     PyDict_SetStringItem(fileinfo, "pstretch", fontinfo->pstretch);
when treating unknown char * from src/lib/fm-pyfontutils.c:222 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
223     PyDict_SetStringItem(fileinfo, "pdescr", fontinfo->pdescr);
when treating unknown char * from src/lib/fm-pyfontutils.c:223 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() fails
calling PyDict_SetItem with NULL as argument 2 (D.25555) at src/lib/fm-pyfontutils.c:223
PyDict_SetItem() invokes Py_TYPE() on the pointer via the PyString_CheckExact() macro, thus accessing (NULL)->ob_type
found 4 similar trace(s) to this
224 
225     fontinfo_destroy(fontinfo);
226 
227     return fileinfo;
228 }

File: src/lib/fm-pyfontutils.c
Function: FT_Get_File_Info
Error: calling PyDict_SetItem with NULL as argument 3 (D.25554) at src/lib/fm-pyfontutils.c:223
175 static PyObject *
176 FT_Get_File_Info(PyObject *self, PyObject *args)
177 {
178     FT_Error        error;
179     int             index = 0;
180     char           *filepath = NULL;
181     PyObject        *fileinfo = PyDict_New();
when PyDict_New() succeeds
182     FontInfo       *fontinfo, f;
183 
184     if (!PyArg_ParseTuple(args, "s|i:FT_Get_File_Info", &filepath, &index))
when PyArg_ParseTuple() succeeds
taking False path
185         return NULL;
186 
187     fontinfo = &f;
188     fontinfo_init(fontinfo);
189 
190     error = FT_Get_Font_Info(fontinfo, filepath, index);
191     if (error)
when considering value == (FT_Error)0 from src/lib/fm-pyfontutils.c:190
taking False path
192     {
193         char *err;
194         err = g_strdup_printf("Failed to load font! : '%s'", filepath);
195         PyErr_SetString(PyExc_EnvironmentError, err);
196         g_free_and_nullify(err);
197         fontinfo_destroy(fontinfo);
198         return NULL;
199     }
200 
201     /* A for loop would have been nice... */
202     PyDict_SetStringItem(fileinfo, "owner", fontinfo->owner);
when treating unknown char * from src/lib/fm-pyfontutils.c:202 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
203     PyDict_SetStringItem(fileinfo, "filepath", fontinfo->filepath);
when treating unknown char * from src/lib/fm-pyfontutils.c:203 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
204     PyDict_SetStringItem(fileinfo, "filetype", fontinfo->filetype);
when treating unknown char * from src/lib/fm-pyfontutils.c:204 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
205     PyDict_SetStringItem(fileinfo, "filesize", fontinfo->filesize);
when treating unknown char * from src/lib/fm-pyfontutils.c:205 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
206     PyDict_SetStringItem(fileinfo, "checksum", fontinfo->checksum);
when treating unknown char * from src/lib/fm-pyfontutils.c:206 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
207     PyDict_SetStringItem(fileinfo, "psname", fontinfo->psname);
when treating unknown char * from src/lib/fm-pyfontutils.c:207 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
208     PyDict_SetStringItem(fileinfo, "family", fontinfo->family);
when treating unknown char * from src/lib/fm-pyfontutils.c:208 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
209     PyDict_SetStringItem(fileinfo, "style", fontinfo->style);
when treating unknown char * from src/lib/fm-pyfontutils.c:209 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
210     PyDict_SetStringItem(fileinfo, "foundry", fontinfo->foundry);
when treating unknown char * from src/lib/fm-pyfontutils.c:210 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
211     PyDict_SetStringItem(fileinfo, "copyright", fontinfo->copyright);
when treating unknown char * from src/lib/fm-pyfontutils.c:211 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
212     PyDict_SetStringItem(fileinfo, "version", fontinfo->version);
when treating unknown char * from src/lib/fm-pyfontutils.c:212 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
213     PyDict_SetStringItem(fileinfo, "description", fontinfo->description);
when treating unknown char * from src/lib/fm-pyfontutils.c:213 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
214     PyDict_SetStringItem(fileinfo, "license", fontinfo->license);
when treating unknown char * from src/lib/fm-pyfontutils.c:214 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
215     PyDict_SetStringItem(fileinfo, "license_url", fontinfo->license_url);
when treating unknown char * from src/lib/fm-pyfontutils.c:215 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
216     PyDict_SetStringItem(fileinfo, "panose", fontinfo->panose);
when treating unknown char * from src/lib/fm-pyfontutils.c:216 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
217     PyDict_SetStringItem(fileinfo, "face", fontinfo->face);
when treating unknown char * from src/lib/fm-pyfontutils.c:217 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
218     PyDict_SetStringItem(fileinfo, "pfamily", fontinfo->pfamily);
when treating unknown char * from src/lib/fm-pyfontutils.c:218 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
219     PyDict_SetStringItem(fileinfo, "pstyle", fontinfo->pstyle);
when treating unknown char * from src/lib/fm-pyfontutils.c:219 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
220     PyDict_SetStringItem(fileinfo, "pvariant", fontinfo->pvariant);
when treating unknown char * from src/lib/fm-pyfontutils.c:220 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
221     PyDict_SetStringItem(fileinfo, "pweight", fontinfo->pweight);
when treating unknown char * from src/lib/fm-pyfontutils.c:221 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
222     PyDict_SetStringItem(fileinfo, "pstretch", fontinfo->pstretch);
when treating unknown char * from src/lib/fm-pyfontutils.c:222 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
223     PyDict_SetStringItem(fileinfo, "pdescr", fontinfo->pdescr);
when treating unknown char * from src/lib/fm-pyfontutils.c:223 as non-NULL
when PyString_FromString() fails
when PyString_FromString() succeeds
calling PyDict_SetItem with NULL as argument 3 (D.25554) at src/lib/fm-pyfontutils.c:223
PyDict_SetItem() invokes Py_INCREF() on the pointer, thus accessing (NULL)->ob_refcnt
found 1 similar trace(s) to this
224 
225     fontinfo_destroy(fontinfo);
226 
227     return fileinfo;
228 }

File: src/lib/fm-pyfontutils.c
Function: FT_Get_File_Info
Error: calling PyDict_SetItem with NULL as argument 2 (D.25552) at src/lib/fm-pyfontutils.c:222
175 static PyObject *
176 FT_Get_File_Info(PyObject *self, PyObject *args)
177 {
178     FT_Error        error;
179     int             index = 0;
180     char           *filepath = NULL;
181     PyObject        *fileinfo = PyDict_New();
when PyDict_New() succeeds
182     FontInfo       *fontinfo, f;
183 
184     if (!PyArg_ParseTuple(args, "s|i:FT_Get_File_Info", &filepath, &index))
when PyArg_ParseTuple() succeeds
taking False path
185         return NULL;
186 
187     fontinfo = &f;
188     fontinfo_init(fontinfo);
189 
190     error = FT_Get_Font_Info(fontinfo, filepath, index);
191     if (error)
when considering value == (FT_Error)0 from src/lib/fm-pyfontutils.c:190
taking False path
192     {
193         char *err;
194         err = g_strdup_printf("Failed to load font! : '%s'", filepath);
195         PyErr_SetString(PyExc_EnvironmentError, err);
196         g_free_and_nullify(err);
197         fontinfo_destroy(fontinfo);
198         return NULL;
199     }
200 
201     /* A for loop would have been nice... */
202     PyDict_SetStringItem(fileinfo, "owner", fontinfo->owner);
when treating unknown char * from src/lib/fm-pyfontutils.c:202 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
203     PyDict_SetStringItem(fileinfo, "filepath", fontinfo->filepath);
when treating unknown char * from src/lib/fm-pyfontutils.c:203 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
204     PyDict_SetStringItem(fileinfo, "filetype", fontinfo->filetype);
when treating unknown char * from src/lib/fm-pyfontutils.c:204 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
205     PyDict_SetStringItem(fileinfo, "filesize", fontinfo->filesize);
when treating unknown char * from src/lib/fm-pyfontutils.c:205 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
206     PyDict_SetStringItem(fileinfo, "checksum", fontinfo->checksum);
when treating unknown char * from src/lib/fm-pyfontutils.c:206 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
207     PyDict_SetStringItem(fileinfo, "psname", fontinfo->psname);
when treating unknown char * from src/lib/fm-pyfontutils.c:207 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
208     PyDict_SetStringItem(fileinfo, "family", fontinfo->family);
when treating unknown char * from src/lib/fm-pyfontutils.c:208 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
209     PyDict_SetStringItem(fileinfo, "style", fontinfo->style);
when treating unknown char * from src/lib/fm-pyfontutils.c:209 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
210     PyDict_SetStringItem(fileinfo, "foundry", fontinfo->foundry);
when treating unknown char * from src/lib/fm-pyfontutils.c:210 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
211     PyDict_SetStringItem(fileinfo, "copyright", fontinfo->copyright);
when treating unknown char * from src/lib/fm-pyfontutils.c:211 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
212     PyDict_SetStringItem(fileinfo, "version", fontinfo->version);
when treating unknown char * from src/lib/fm-pyfontutils.c:212 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
213     PyDict_SetStringItem(fileinfo, "description", fontinfo->description);
when treating unknown char * from src/lib/fm-pyfontutils.c:213 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
214     PyDict_SetStringItem(fileinfo, "license", fontinfo->license);
when treating unknown char * from src/lib/fm-pyfontutils.c:214 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
215     PyDict_SetStringItem(fileinfo, "license_url", fontinfo->license_url);
when treating unknown char * from src/lib/fm-pyfontutils.c:215 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
216     PyDict_SetStringItem(fileinfo, "panose", fontinfo->panose);
when treating unknown char * from src/lib/fm-pyfontutils.c:216 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
217     PyDict_SetStringItem(fileinfo, "face", fontinfo->face);
when treating unknown char * from src/lib/fm-pyfontutils.c:217 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
218     PyDict_SetStringItem(fileinfo, "pfamily", fontinfo->pfamily);
when treating unknown char * from src/lib/fm-pyfontutils.c:218 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
219     PyDict_SetStringItem(fileinfo, "pstyle", fontinfo->pstyle);
when treating unknown char * from src/lib/fm-pyfontutils.c:219 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
220     PyDict_SetStringItem(fileinfo, "pvariant", fontinfo->pvariant);
when treating unknown char * from src/lib/fm-pyfontutils.c:220 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
221     PyDict_SetStringItem(fileinfo, "pweight", fontinfo->pweight);
when treating unknown char * from src/lib/fm-pyfontutils.c:221 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
222     PyDict_SetStringItem(fileinfo, "pstretch", fontinfo->pstretch);
when treating unknown char * from src/lib/fm-pyfontutils.c:222 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() fails
calling PyDict_SetItem with NULL as argument 2 (D.25552) at src/lib/fm-pyfontutils.c:222
PyDict_SetItem() invokes Py_TYPE() on the pointer via the PyString_CheckExact() macro, thus accessing (NULL)->ob_type
found 1 similar trace(s) to this
223     PyDict_SetStringItem(fileinfo, "pdescr", fontinfo->pdescr);
224 
225     fontinfo_destroy(fontinfo);
226 
227     return fileinfo;
228 }

File: src/lib/fm-pyfontutils.c
Function: FT_Get_File_Info
Error: calling PyDict_SetItem with NULL as argument 3 (D.25551) at src/lib/fm-pyfontutils.c:222
175 static PyObject *
176 FT_Get_File_Info(PyObject *self, PyObject *args)
177 {
178     FT_Error        error;
179     int             index = 0;
180     char           *filepath = NULL;
181     PyObject        *fileinfo = PyDict_New();
when PyDict_New() succeeds
182     FontInfo       *fontinfo, f;
183 
184     if (!PyArg_ParseTuple(args, "s|i:FT_Get_File_Info", &filepath, &index))
when PyArg_ParseTuple() succeeds
taking False path
185         return NULL;
186 
187     fontinfo = &f;
188     fontinfo_init(fontinfo);
189 
190     error = FT_Get_Font_Info(fontinfo, filepath, index);
191     if (error)
when considering value == (FT_Error)0 from src/lib/fm-pyfontutils.c:190
taking False path
192     {
193         char *err;
194         err = g_strdup_printf("Failed to load font! : '%s'", filepath);
195         PyErr_SetString(PyExc_EnvironmentError, err);
196         g_free_and_nullify(err);
197         fontinfo_destroy(fontinfo);
198         return NULL;
199     }
200 
201     /* A for loop would have been nice... */
202     PyDict_SetStringItem(fileinfo, "owner", fontinfo->owner);
when treating unknown char * from src/lib/fm-pyfontutils.c:202 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
203     PyDict_SetStringItem(fileinfo, "filepath", fontinfo->filepath);
when treating unknown char * from src/lib/fm-pyfontutils.c:203 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
204     PyDict_SetStringItem(fileinfo, "filetype", fontinfo->filetype);
when treating unknown char * from src/lib/fm-pyfontutils.c:204 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
205     PyDict_SetStringItem(fileinfo, "filesize", fontinfo->filesize);
when treating unknown char * from src/lib/fm-pyfontutils.c:205 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
206     PyDict_SetStringItem(fileinfo, "checksum", fontinfo->checksum);
when treating unknown char * from src/lib/fm-pyfontutils.c:206 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
207     PyDict_SetStringItem(fileinfo, "psname", fontinfo->psname);
when treating unknown char * from src/lib/fm-pyfontutils.c:207 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
208     PyDict_SetStringItem(fileinfo, "family", fontinfo->family);
when treating unknown char * from src/lib/fm-pyfontutils.c:208 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
209     PyDict_SetStringItem(fileinfo, "style", fontinfo->style);
when treating unknown char * from src/lib/fm-pyfontutils.c:209 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
210     PyDict_SetStringItem(fileinfo, "foundry", fontinfo->foundry);
when treating unknown char * from src/lib/fm-pyfontutils.c:210 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
211     PyDict_SetStringItem(fileinfo, "copyright", fontinfo->copyright);
when treating unknown char * from src/lib/fm-pyfontutils.c:211 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
212     PyDict_SetStringItem(fileinfo, "version", fontinfo->version);
when treating unknown char * from src/lib/fm-pyfontutils.c:212 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
213     PyDict_SetStringItem(fileinfo, "description", fontinfo->description);
when treating unknown char * from src/lib/fm-pyfontutils.c:213 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
214     PyDict_SetStringItem(fileinfo, "license", fontinfo->license);
when treating unknown char * from src/lib/fm-pyfontutils.c:214 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
215     PyDict_SetStringItem(fileinfo, "license_url", fontinfo->license_url);
when treating unknown char * from src/lib/fm-pyfontutils.c:215 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
216     PyDict_SetStringItem(fileinfo, "panose", fontinfo->panose);
when treating unknown char * from src/lib/fm-pyfontutils.c:216 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
217     PyDict_SetStringItem(fileinfo, "face", fontinfo->face);
when treating unknown char * from src/lib/fm-pyfontutils.c:217 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
218     PyDict_SetStringItem(fileinfo, "pfamily", fontinfo->pfamily);
when treating unknown char * from src/lib/fm-pyfontutils.c:218 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
219     PyDict_SetStringItem(fileinfo, "pstyle", fontinfo->pstyle);
when treating unknown char * from src/lib/fm-pyfontutils.c:219 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
220     PyDict_SetStringItem(fileinfo, "pvariant", fontinfo->pvariant);
when treating unknown char * from src/lib/fm-pyfontutils.c:220 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
221     PyDict_SetStringItem(fileinfo, "pweight", fontinfo->pweight);
when treating unknown char * from src/lib/fm-pyfontutils.c:221 as non-NULL
when PyString_FromString() succeeds
when PyString_FromString() succeeds
when PyDict_SetItem() succeeds
222     PyDict_SetStringItem(fileinfo, "pstretch", fontinfo->pstretch);
when treating unknown char * from src/lib/fm-pyfontutils.c:222 as non-NULL
when PyString_FromString() fails
when PyString_FromString() succeeds
calling PyDict_SetItem with NULL as argument 3 (D.25551) at src/lib/fm-pyfontutils.c:222
PyDict_SetItem() invokes Py_INCREF() on the pointer, thus accessing (NULL)->ob_refcnt
223     PyDict_SetStringItem(fileinfo, "pdescr", fontinfo->pdescr);
224 
225     fontinfo_destroy(fontinfo);
226 
227     return fileinfo;
228 }

File: src/lib/fm-pyfontutils.c
Function: FT_Get_File_Info
Error: ob_refcnt of '*fileinfo' is 1 too high
175 static PyObject *
176 FT_Get_File_Info(PyObject *self, PyObject *args)
177 {
178     FT_Error        error;
179     int             index = 0;
180     char           *filepath = NULL;
181     PyObject        *fileinfo = PyDict_New();
when PyDict_New() succeeds
PyDictObject allocated at:     PyObject        *fileinfo = PyDict_New();
ob_refcnt is now refs: 1 + N where N >= 0
182     FontInfo       *fontinfo, f;
183 
184     if (!PyArg_ParseTuple(args, "s|i:FT_Get_File_Info", &filepath, &index))
when PyArg_ParseTuple() succeeds
taking False path
185         return NULL;
186 
187     fontinfo = &f;
188     fontinfo_init(fontinfo);
189 
190     error = FT_Get_Font_Info(fontinfo, filepath, index);
191     if (error)
when considering range: -0x80000000 <= value <= -1
taking True path
192     {
193         char *err;
194         err = g_strdup_printf("Failed to load font! : '%s'", filepath);
195         PyErr_SetString(PyExc_EnvironmentError, err);
calling PyErr_SetString()
196         g_free_and_nullify(err);
197         fontinfo_destroy(fontinfo);
198         return NULL;
199     }
200 
201     /* A for loop would have been nice... */
202     PyDict_SetStringItem(fileinfo, "owner", fontinfo->owner);
203     PyDict_SetStringItem(fileinfo, "filepath", fontinfo->filepath);
204     PyDict_SetStringItem(fileinfo, "filetype", fontinfo->filetype);
205     PyDict_SetStringItem(fileinfo, "filesize", fontinfo->filesize);
206     PyDict_SetStringItem(fileinfo, "checksum", fontinfo->checksum);
207     PyDict_SetStringItem(fileinfo, "psname", fontinfo->psname);
208     PyDict_SetStringItem(fileinfo, "family", fontinfo->family);
209     PyDict_SetStringItem(fileinfo, "style", fontinfo->style);
210     PyDict_SetStringItem(fileinfo, "foundry", fontinfo->foundry);
211     PyDict_SetStringItem(fileinfo, "copyright", fontinfo->copyright);
212     PyDict_SetStringItem(fileinfo, "version", fontinfo->version);
213     PyDict_SetStringItem(fileinfo, "description", fontinfo->description);
214     PyDict_SetStringItem(fileinfo, "license", fontinfo->license);
215     PyDict_SetStringItem(fileinfo, "license_url", fontinfo->license_url);
216     PyDict_SetStringItem(fileinfo, "panose", fontinfo->panose);
217     PyDict_SetStringItem(fileinfo, "face", fontinfo->face);
218     PyDict_SetStringItem(fileinfo, "pfamily", fontinfo->pfamily);
219     PyDict_SetStringItem(fileinfo, "pstyle", fontinfo->pstyle);
220     PyDict_SetStringItem(fileinfo, "pvariant", fontinfo->pvariant);
221     PyDict_SetStringItem(fileinfo, "pweight", fontinfo->pweight);
222     PyDict_SetStringItem(fileinfo, "pstretch", fontinfo->pstretch);
223     PyDict_SetStringItem(fileinfo, "pdescr", fontinfo->pdescr);
224 
225     fontinfo_destroy(fontinfo);
226 
227     return fileinfo;
228 }
ob_refcnt of '*fileinfo' is 1 too high
was expecting final ob_refcnt to be N + 0 (for some unknown N)
but final ob_refcnt is N + 1