@@ -1738,8 +1738,8 @@ _textiowrapper_writeflush(textio *self)
1738
1738
1739
1739
/* Try to determine bytes written from return value
1740
1740
1741
- XXX:On unexpected return this matches previous behaviorand asumes
1742
- all data was written. */
1741
+ XXX:Unexpected return: match previous behaviorassume all data was
1742
+ written. */
1743
1743
/* OPEN QUESTION: None is common in CPython, should this warn? */
1744
1744
if (ret == Py_None ) {
1745
1745
Py_DECREF (b );
@@ -1762,34 +1762,29 @@ _textiowrapper_writeflush(textio *self)
1762
1762
/* Check for unexpected return values. */
1763
1763
/* Can't get out size follow return previous behavior. */
1764
1764
if (size == -1 && PyErr_Occurred ()) {
1765
- if (!PyErr_ExceptionMatches (PyExc_TypeError )) {
1766
- Py_DECREF (b );
1767
- Py_DECREF (ret );
1768
- return -1 ;
1769
- }
1770
- PyErr_Clear ();/* fall through */
1765
+ /* Warn about the value, but do not error. */
1766
+ PyObject * exc = PyErr_GetRaisedException ()
1771
1767
PyErr_WarnFormat (PyExc_DeprecationWarning ,1 ,
1772
- "buffer.write returned value '%s' not specified by"
1773
- " BufferedIOBase or TextIOBase" ,ret );
1768
+ "write returned value '%s' not specified by"
1769
+ " BufferedIOBase or TextIOBase (%s)" ,ret ,exc );
1770
+ Py_DECREF (exc );
1774
1771
Py_DECREF (b );
1775
1772
Py_DECREF (ret );
1776
1773
return 0 ;
1777
1774
}
1778
1775
/* Negative count of bytes doesn't make sense. */
1779
1776
else if (size < 0 ) {
1780
1777
PyErr_WarnFormat (PyExc_RuntimeWarning ,1 ,
1781
- "buffer.write returned negative count of bytes '%s'" ,
1782
- ret );
1778
+ "write returned negative count of bytes '%s'" ,ret );
1783
1779
Py_DECREF (b );
1784
1780
Py_DECREF (ret );
1785
1781
return 0 ;
1786
1782
}
1787
1783
/* More written than passed in call. */
1788
1784
else if (size > bytes_to_write ) {
1789
1785
PyErr_WarnFormat (PyExc_RuntimeWarning ,1 ,
1790
- "buffer.write returned '%s' bytes written but was only"
1791
- " called with '%s' bytes to write" ,
1792
- ret ,bytes_to_write );
1786
+ "write returned '%s' bytes written but was only called"
1787
+ " with '%s' bytes to write" ,ret ,bytes_to_write );
1793
1788
Py_DECREF (b );
1794
1789
Py_DECREF (ret );
1795
1790
return 0 ;
@@ -1805,7 +1800,7 @@ _textiowrapper_writeflush(textio *self)
1805
1800
break ;
1806
1801
}
1807
1802
1808
- /* Make a newPyByte to keep type for next call to write. */
1803
+ /* Make a newPyBytes to keep type for next call to write. */
1809
1804
pending = PyBytes_FromStringAndSize (
1810
1805
PyBytes_AS_STRING (b )+ size ,
1811
1806
self -> pending_bytes_count );