osdir.com


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

write function call _io_BufferedWriter_write_impl twice?


My script looks like this:

    f = open('myfile', 'a+b')
    f.write(b'abcde')

And I also add a `printf` statement in the _io_BufferedWriter_write_impl
<https://github.com/python/cpython/blob/ada319bb6d0ebcc68d3e0ef2b4279ea061877ac8/Modules/_io/bufferedio.c#L1910>
function.

    static PyObject * _io_BufferedWriter_write_impl(buffered *self,
Py_buffer *buffer)
    /*[clinic end generated code: output=7f8d1365759bfc6b
input=dd87dd85fc7f8850]*/
    {
        printf("call write_impl\n");
        PyObject *res = NULL;
        Py_ssize_t written, avail, remaining;
        Py_off_t offset;
       ...

After I compiled then run my script. I found _io_BufferedWriter_write_impl
<https://github.com/python/cpython/blob/ada319bb6d0ebcc68d3e0ef2b4279ea061877ac8/Modules/_io/bufferedio.c#L1910>
had
been called twice which I expected only once. The second time it changed
self->pos to an unexpected value too.