File: src/disc/cdrommodule.c
Function: cdrom_open
Error: ob_refcnt of '*cdrom_file_object' is 1 too high
190 static PyObject* cdrom_open(PyObject *self, PyObject *args)
191 {
192     int cdrom_fd;
193     FILE *cdrom_file;
194     char *cdrom_device = CDDB_DEFAULT_CDROM_DEVICE;
195     int cdrom_open_flags = CDDB_DEFAULT_CDROM_FLAGS;
196 
197     PyObject *cdrom_file_object;
198 
199     if (!PyArg_ParseTuple(args, "|si", &cdrom_device, &cdrom_open_flags))
200 	return NULL;
when PyArg_ParseTuple() succeeds
taking False path
201 
202     cdrom_fd = open(cdrom_device, cdrom_open_flags);
203 
204     if (cdrom_fd == -1) {
205 	PyErr_SetFromErrno(cdrom_error);
when considering range: -0x80000000 <= value <= -2
taking False path
206 	return NULL;
207     }
208     
209     cdrom_file = fdopen(cdrom_fd, "r");
210 
211     if (cdrom_file == NULL) {
212 	PyErr_SetFromErrno(cdrom_error);
when treating unknown struct FILE * from src/disc/cdrommodule.c:210 as non-NULL
taking False path
213 	return NULL;
214     }
215 
216     cdrom_file_object = PyFile_FromFile(cdrom_file, cdrom_device, "r", cdrom_close);
217 
when PyFile_FromFile() succeeds
new ref from (unknown) PyFile_FromFile allocated at:     cdrom_file_object = PyFile_FromFile(cdrom_file, cdrom_device, "r", cdrom_close);
ob_refcnt is now refs: 1 + N where N >= 0
218     if (cdrom_file_object == NULL) {
219 	PyErr_SetString(cdrom_error, "Internal conversion from file pointer to Python object failed");
taking False path
220 	fclose(cdrom_file);
221 	return NULL;
222     }
223 
224     return Py_BuildValue("O", cdrom_file_object);
225 }
when Py_BuildValue() succeeds
ob_refcnt is now refs: 1 + N where N >= 1
226 
ob_refcnt of '*cdrom_file_object' 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 3 similar trace(s) to this