From 9690b0065472c8683a4c9fc96ed9da769776d717 Mon Sep 17 00:00:00 2001 From: Francesco Montorsi Date: Thu, 8 Jan 2009 18:26:35 +0000 Subject: [PATCH] always remember to test IsOk() after using wxFileInputStream git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57917 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- interface/wx/wfstream.h | 34 +++++++++++++++++++++++++++------- src/common/docview.cpp | 2 +- src/generic/animateg.cpp | 3 ++- src/gtk/animate.cpp | 2 ++ src/html/chm.cpp | 3 +++ src/x11/bitmap.cpp | 4 ++-- src/xrc/xmlres.cpp | 2 +- 7 files changed, 38 insertions(+), 12 deletions(-) diff --git a/interface/wx/wfstream.h b/interface/wx/wfstream.h index 596152b5fe..d5c03564e4 100644 --- a/interface/wx/wfstream.h +++ b/interface/wx/wfstream.h @@ -23,6 +23,8 @@ class wxTempFileOutputStream : public wxOutputStream public: /** Associates wxTempFileOutputStream with the file to be replaced and opens it. + + @warning You should use wxStreamBase::IsOk() to verify if the constructor succeeded. Call Commit() or wxOutputStream::Close() to replace the old file and close @@ -69,7 +71,10 @@ class wxFFileOutputStream : public wxOutputStream { public: /** - Initializes a file stream in write-only mode using the file descriptor @e fp. + Open the given file @a filename with mode @a mode. + + @warning + You should use wxStreamBase::IsOk() to verify if the constructor succeeded. */ wxFFileOutputStream(const wxString& filename, const wxString& mode = "wb"); @@ -116,7 +121,10 @@ class wxFileOutputStream : public wxOutputStream { public: /** - Creates a new file with ofilename name and initializes the stream in write-only mode. + Creates a new file with @a ofileName name and initializes the stream in write-only mode. + + @warning + You should use wxStreamBase::IsOk() to verify if the constructor succeeded. */ wxFileOutputStream(const wxString& ofileName); @@ -162,7 +170,10 @@ class wxFileInputStream : public wxInputStream { public: /** - Opens the specified file using its ifilename name in read-only mode. + Opens the specified file using its @a ifileName name in read-only mode. + + @warning + You should use wxStreamBase::IsOk() to verify if the constructor succeeded. */ wxFileInputStream(const wxString& ifileName); @@ -208,7 +219,10 @@ class wxFFileInputStream : public wxInputStream { public: /** - Opens the specified file using its filename name using the specified mode. + Opens the specified file using its @a filename name using the specified @a mode. + + @warning + You should use wxStreamBase::IsOk() to verify if the constructor succeeded. */ wxFFileInputStream(const wxString& filename, const wxString& mode = "rb"); @@ -250,8 +264,11 @@ class wxFFileStream : public wxFFileOutputStream { public: /** - Initializes a new file stream in read-write mode using the specified - @a iofilename name. + Initializes a new file stream in the given @a mode using the specified + @a iofileName name. + + @warning + You should use wxStreamBase::IsOk() to verify if the constructor succeeded. */ wxFFileStream(const wxString& iofileName, const wxString& mode = "w+b"); }; @@ -273,7 +290,10 @@ class wxFileStream : public wxFileOutputStream public: /** Initializes a new file stream in read-write mode using the specified - @a iofilename name. + @a iofileName name. + + @warning + You should use wxStreamBase::IsOk() to verify if the constructor succeeded. */ wxFileStream(const wxString& iofileName); }; diff --git a/src/common/docview.cpp b/src/common/docview.cpp index 11f9b7b673..5de605d010 100644 --- a/src/common/docview.cpp +++ b/src/common/docview.cpp @@ -609,7 +609,7 @@ bool wxDocument::DoOpenDocument(const wxString& file) if ( !store ) #else wxFileInputStream store(file); - if (store.GetLastError() != wxSTREAM_NO_ERROR) + if (store.GetLastError() != wxSTREAM_NO_ERROR || !store.IsOk()) #endif { wxLogError(_("File \"%s\" could not be opened for reading."), file); diff --git a/src/generic/animateg.cpp b/src/generic/animateg.cpp index 0815503296..fe6ee204da 100644 --- a/src/generic/animateg.cpp +++ b/src/generic/animateg.cpp @@ -138,7 +138,6 @@ bool wxAnimation::Load(wxInputStream &stream, wxAnimationType type) m_refData = handler->Clone(); return M_ANIMDATA->Load(stream); } - } wxLogWarning( _("No handler found for animation type.") ); @@ -309,6 +308,8 @@ wxAnimationCtrl::~wxAnimationCtrl() bool wxAnimationCtrl::LoadFile(const wxString& filename, wxAnimationType type) { wxFileInputStream fis(filename); + if (!fis.Ok()) + return false; return Load(fis, type); } diff --git a/src/gtk/animate.cpp b/src/gtk/animate.cpp index c6f7abe951..8cf11f0e99 100644 --- a/src/gtk/animate.cpp +++ b/src/gtk/animate.cpp @@ -238,6 +238,8 @@ wxAnimationCtrl::~wxAnimationCtrl() bool wxAnimationCtrl::LoadFile(const wxString &filename, wxAnimationType type) { wxFileInputStream fis(filename); + if (!fis.IsOk()) + return false; return Load(fis, type); } diff --git a/src/html/chm.cpp b/src/html/chm.cpp index 288305d606..5e14bcd55d 100644 --- a/src/html/chm.cpp +++ b/src/html/chm.cpp @@ -717,6 +717,9 @@ bool wxChmInputStream::CreateFileStream(const wxString& pattern) { // Open a filestream to extracted file fin = new wxFileInputStream(tmpfile); + if (!fin->IsOk()) + return false; + m_size = fin->GetSize(); m_content = (char *) malloc(m_size+1); fin->Read(m_content, m_size); diff --git a/src/x11/bitmap.cpp b/src/x11/bitmap.cpp index ec233b0c93..ea19aee7a3 100644 --- a/src/x11/bitmap.cpp +++ b/src/x11/bitmap.cpp @@ -1386,10 +1386,10 @@ bool wxXPMFileHandler::LoadFile(wxBitmap *bitmap, const wxString& name, #elif wxUSE_STREAMS wxXPMDecoder decoder; wxFileInputStream stream(name); - if (stream.Ok()) + if (stream.IsOk()) { wxImage image(decoder.ReadFile(stream)); - return image.Ok() && bitmap->CreateFromImage(image); + return image.IsOk() && bitmap->CreateFromImage(image); } return false; diff --git a/src/xrc/xmlres.cpp b/src/xrc/xmlres.cpp index fc16e6ec42..ae88b74358 100644 --- a/src/xrc/xmlres.cpp +++ b/src/xrc/xmlres.cpp @@ -497,7 +497,7 @@ bool wxXmlResource::UpdateResources() delete rec->Doc; rec->Doc = new wxXmlDocument; } - if (!stream || !rec->Doc->Load(*stream, encoding)) + if (!stream || !stream->IsOk() || !rec->Doc->Load(*stream, encoding)) { wxLogError(_("Cannot load resources from file '%s'."), rec->File); -- 2.45.2