mirror of
https://github.com/python/cpython.git
synced 2026-01-22 15:18:52 +00:00
Merged revisions 67797 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk ........ r67797 | amaury.forgeotdarc | 2008-12-15 22:47:57 +0100 (Mon, 15 Dec 2008) | 4 lines #3954: Fix error handling code in _hotshot.logreader Will port to 2.6. hotshot was deleted from python 3. ........
This commit is contained in:
parent
3fced65aa3
commit
360d8cfc9d
3 changed files with 17 additions and 10 deletions
|
|
@ -3,6 +3,8 @@
|
|||
import os
|
||||
import pprint
|
||||
import unittest
|
||||
import _hotshot
|
||||
import gc
|
||||
|
||||
from test import test_support
|
||||
|
||||
|
|
@ -124,6 +126,10 @@ def test_bad_sys_path(self):
|
|||
if os.path.exists(test_support.TESTFN):
|
||||
os.remove(test_support.TESTFN)
|
||||
|
||||
def test_logreader_eof_error(self):
|
||||
self.assertRaises((IOError, EOFError), _hotshot.logreader, ".")
|
||||
gc.collect()
|
||||
|
||||
def test_main():
|
||||
test_support.run_unittest(HotShotTestCase)
|
||||
|
||||
|
|
|
|||
|
|
@ -32,6 +32,9 @@ Core and Builtins
|
|||
Library
|
||||
-------
|
||||
|
||||
- Issue #3954: Fix a potential SystemError in _hotshot.logreader error
|
||||
handling.
|
||||
|
||||
- Issue #4574: fix a crash in io.IncrementalNewlineDecoder when a carriage
|
||||
return encodes to more than one byte in the source encoding (e.g. UTF-16)
|
||||
and gets split on a chunk boundary.
|
||||
|
|
|
|||
|
|
@ -1357,20 +1357,16 @@ hotshot_logreader(PyObject *unused, PyObject *args)
|
|||
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;
|
||||
}
|
||||
if (self->info == NULL)
|
||||
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);
|
||||
|
|
@ -1383,13 +1379,15 @@ hotshot_logreader(PyObject *unused, PyObject *args)
|
|||
else
|
||||
PyErr_SetString(PyExc_RuntimeError,
|
||||
"unexpected error");
|
||||
break;
|
||||
goto error;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
finally:
|
||||
return (PyObject *) self;
|
||||
error:
|
||||
Py_DECREF(self);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue