X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/915a955caffbbc0982cc4a1952113bcd09d6d009..74698d3a22d5e611bbcd731a3ade616c66cfaca6:/src/common/stream.cpp diff --git a/src/common/stream.cpp b/src/common/stream.cpp index c3c66e9e50..957dd933fe 100644 --- a/src/common/stream.cpp +++ b/src/common/stream.cpp @@ -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()