Index: Modules/_hotshot.c =================================================================== --- Modules/_hotshot.c (révision 66572) +++ Modules/_hotshot.c (copie de travail) @@ -1357,24 +1357,21 @@ self->logfp = fopen(filename, "rb"); if (self->logfp == NULL) { PyErr_SetFromErrnoWithFilename(PyExc_IOError, filename); - Py_DECREF(self); - self = NULL; - goto finally; + goto error; } self->info = PyDict_New(); if (self->info == NULL) { - Py_DECREF(self); - goto finally; + goto error; } /* read initial info */ for (;;) { if ((c = fgetc(self->logfp)) == EOF) { eof_error(self); - break; + goto error; } if (c != WHAT_ADD_INFO) { ungetc(c, self->logfp); - break; + goto error; } err = unpack_add_info(self); if (err) { @@ -1383,13 +1380,15 @@ else PyErr_SetString(PyExc_RuntimeError, "unexpected error"); - break; + goto error; } } } } - finally: return (PyObject *) self; + error: + Py_DECREF(self); + return NULL; }