New submission from intuited <cecinemapasdera...@gmail.com>:

Discovered when using the current Ubuntu 10.04 package of Python: 2.6.5-0ubuntu1

Reproducible with ::

    outfile = open("tmpout", "w")
    outfile.writelines(f() or "line" for f in (outfile.close,))

This problem is probably most likely to be encountered when using the 
``fileinput`` module, because of the way it abstracts away the closing of 
files.  E.G.::

    from fileinput import input
    lines = input("tmpout", inplace=1)
    first = lines.next()
    from sys import stdout
    stdout.writelines(lines)

Both of the above pieces of code cause Segmentation Faults.

It looks like in line 1779 of ``Objects/fileobject.c``, ``f->fp`` is being 
passed to ``fwrite`` as 0.  I guess this happens because no check is done after 
the call to ``PyIter_Next`` on line 1730 to see if the file is still open.

I don't see this as a big issue, though it is annoying that it seemingly 
prevents generators from being used with the `fileinput` module.  Doing so 
would be a bit awkward and hacky anyway though.

----------
components: IO
messages: 118877
nosy: intuited
priority: normal
severity: normal
status: open
title: Closing a file within its writelines method causes segfault
type: crash
versions: Python 2.6

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue10125>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to