]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/stream.cpp
wxSTAY_ON_TOP support in wxMessageBox (patch 581826)
[wxWidgets.git] / src / common / stream.cpp
index c3c66e9e50a5b387133de4924dcbfe6e1184a838..957dd933fec1d796cb64a5959c8d08e8d33b81ef 100644 (file)
@@ -763,22 +763,27 @@ size_t wxInputStream::GetWBack(void *buf, size_t bsize)
 
 size_t wxInputStream::Ungetch(const void *buf, size_t bufsize)
 {
+    if ( m_lasterror != wxSTREAM_NO_ERROR && m_lasterror != wxSTREAM_EOF )
+    {
+        // can't operate on this stream until the error is cleared
+        return 0;
+    }
+
     char *ptrback = AllocSpaceWBack(bufsize);
     if (!ptrback)
         return 0;
 
+    // Eof() shouldn't return TRUE any longer
+    if ( m_lasterror == wxSTREAM_EOF )
+        m_lasterror = wxSTREAM_NO_ERROR;
+
     memcpy(ptrback, buf, bufsize);
     return bufsize;
 }
 
 bool wxInputStream::Ungetch(char c)
 {
-    void *ptrback = AllocSpaceWBack(1);
-    if (!ptrback)
-        return FALSE;
-
-    *(char *)ptrback = c;
-    return TRUE;
+    return Ungetch(&c, sizeof(char)) != 0;
 }
 
 char wxInputStream::GetC()