X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/72a7c55982140a7e296346e92f66a21d3f741537..66c2bf7b1d9326fb650acfaae22ec50528cfbf7c:/include/wx/stdstream.h diff --git a/include/wx/stdstream.h b/include/wx/stdstream.h index 993c1eae73..73ac0ac260 100644 --- a/include/wx/stdstream.h +++ b/include/wx/stdstream.h @@ -4,7 +4,6 @@ // wxInputStream and wxOutputStream // Author: Jonathan Liu // Created: 2009-05-02 -// RCS-ID: $Id$ // Copyright: (c) 2009 Jonathan Liu // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// @@ -14,11 +13,11 @@ #include "wx/defs.h" // wxUSE_STD_IOSTREAM -#if wxUSE_STD_IOSTREAM +#if wxUSE_STREAMS && wxUSE_STD_IOSTREAM -#include -#include -#include +#include "wx/defs.h" +#include "wx/stream.h" +#include "wx/ioswrap.h" // ========================================================================== // wxStdInputStreamBuffer @@ -47,6 +46,18 @@ protected: virtual int uflow(); virtual int pbackfail(int c = EOF); + // Special work around for VC8/9 (this bug was fixed in VC10 and later): + // these versions have non-standard _Xsgetn_s() that it being called from + // the stream code instead of xsgetn() and so our overridden implementation + // never actually gets used. To work around this, forward to it explicitly. +#if defined(__VISUALC8__) || defined(__VISUALC9__) + virtual std::streamsize + _Xsgetn_s(char *s, size_t WXUNUSED(size), std::streamsize n) + { + return xsgetn(s, n); + } +#endif // VC8 or VC9 + wxInputStream& m_stream; int m_lastChar; }; @@ -106,6 +117,6 @@ protected: wxStdOutputStreamBuffer m_streamBuffer; }; -#endif // wxUSE_STD_IOSTREAM +#endif // wxUSE_STREAMS && wxUSE_STD_IOSTREAM #endif // _WX_STDSTREAM_H_