fix detail::pythonbuf::overflow()'s return value to return not_eof(c) (#1479)

diff --git a/include/pybind11/iostream.h b/include/pybind11/iostream.h
index a9c27aa..3caf556 100644
--- a/include/pybind11/iostream.h
+++ b/include/pybind11/iostream.h
@@ -34,7 +34,7 @@
             *pptr() = traits_type::to_char_type(c);
             pbump(1);
         }
-        return sync() ? traits_type::not_eof(c) : traits_type::eof();
+        return sync() == 0 ? traits_type::not_eof(c) : traits_type::eof();
     }
 
     int sync() {
diff --git a/tests/test_iostream.py b/tests/test_iostream.py
index 3364849..167b887 100644
--- a/tests/test_iostream.py
+++ b/tests/test_iostream.py
@@ -53,6 +53,16 @@
     assert stdout == ''
     assert stderr == msg
 
+def test_captured_large_string(capsys):
+    # Make this bigger than the buffer used on the C++ side: 1024 chars
+    msg = "I've been redirected to Python, I hope!"
+    msg = msg * (1024 // len(msg) + 1)
+
+    m.captured_output_default(msg)
+    stdout, stderr = capsys.readouterr()
+    assert stdout == msg
+    assert stderr == ''
+
 
 def test_guard_capture(capsys):
     msg = "I've been redirected to Python, I hope!"