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
This commit is contained in:
Francesco Montorsi
2009-01-08 18:26:35 +00:00
parent 35510e483f
commit 9690b00654
7 changed files with 38 additions and 12 deletions

View File

@@ -23,6 +23,8 @@ class wxTempFileOutputStream : public wxOutputStream
public: public:
/** /**
Associates wxTempFileOutputStream with the file to be replaced and opens it. Associates wxTempFileOutputStream with the file to be replaced and opens it.
@warning
You should use wxStreamBase::IsOk() to verify if the constructor succeeded. You should use wxStreamBase::IsOk() to verify if the constructor succeeded.
Call Commit() or wxOutputStream::Close() to replace the old file and close Call Commit() or wxOutputStream::Close() to replace the old file and close
@@ -69,7 +71,10 @@ class wxFFileOutputStream : public wxOutputStream
{ {
public: 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, wxFFileOutputStream(const wxString& filename,
const wxString& mode = "wb"); const wxString& mode = "wb");
@@ -116,7 +121,10 @@ class wxFileOutputStream : public wxOutputStream
{ {
public: 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); wxFileOutputStream(const wxString& ofileName);
@@ -162,7 +170,10 @@ class wxFileInputStream : public wxInputStream
{ {
public: 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); wxFileInputStream(const wxString& ifileName);
@@ -208,7 +219,10 @@ class wxFFileInputStream : public wxInputStream
{ {
public: 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, wxFFileInputStream(const wxString& filename,
const wxString& mode = "rb"); const wxString& mode = "rb");
@@ -250,8 +264,11 @@ class wxFFileStream : public wxFFileOutputStream
{ {
public: public:
/** /**
Initializes a new file stream in read-write mode using the specified Initializes a new file stream in the given @a mode using the specified
@a iofilename name. @a iofileName name.
@warning
You should use wxStreamBase::IsOk() to verify if the constructor succeeded.
*/ */
wxFFileStream(const wxString& iofileName, const wxString& mode = "w+b"); wxFFileStream(const wxString& iofileName, const wxString& mode = "w+b");
}; };
@@ -273,7 +290,10 @@ class wxFileStream : public wxFileOutputStream
public: public:
/** /**
Initializes a new file stream in read-write mode using the specified 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); wxFileStream(const wxString& iofileName);
}; };

View File

@@ -609,7 +609,7 @@ bool wxDocument::DoOpenDocument(const wxString& file)
if ( !store ) if ( !store )
#else #else
wxFileInputStream store(file); wxFileInputStream store(file);
if (store.GetLastError() != wxSTREAM_NO_ERROR) if (store.GetLastError() != wxSTREAM_NO_ERROR || !store.IsOk())
#endif #endif
{ {
wxLogError(_("File \"%s\" could not be opened for reading."), file); wxLogError(_("File \"%s\" could not be opened for reading."), file);

View File

@@ -138,7 +138,6 @@ bool wxAnimation::Load(wxInputStream &stream, wxAnimationType type)
m_refData = handler->Clone(); m_refData = handler->Clone();
return M_ANIMDATA->Load(stream); return M_ANIMDATA->Load(stream);
} }
} }
wxLogWarning( _("No handler found for animation type.") ); wxLogWarning( _("No handler found for animation type.") );
@@ -309,6 +308,8 @@ wxAnimationCtrl::~wxAnimationCtrl()
bool wxAnimationCtrl::LoadFile(const wxString& filename, wxAnimationType type) bool wxAnimationCtrl::LoadFile(const wxString& filename, wxAnimationType type)
{ {
wxFileInputStream fis(filename); wxFileInputStream fis(filename);
if (!fis.Ok())
return false;
return Load(fis, type); return Load(fis, type);
} }

View File

@@ -238,6 +238,8 @@ wxAnimationCtrl::~wxAnimationCtrl()
bool wxAnimationCtrl::LoadFile(const wxString &filename, wxAnimationType type) bool wxAnimationCtrl::LoadFile(const wxString &filename, wxAnimationType type)
{ {
wxFileInputStream fis(filename); wxFileInputStream fis(filename);
if (!fis.IsOk())
return false;
return Load(fis, type); return Load(fis, type);
} }

View File

@@ -717,6 +717,9 @@ bool wxChmInputStream::CreateFileStream(const wxString& pattern)
{ {
// Open a filestream to extracted file // Open a filestream to extracted file
fin = new wxFileInputStream(tmpfile); fin = new wxFileInputStream(tmpfile);
if (!fin->IsOk())
return false;
m_size = fin->GetSize(); m_size = fin->GetSize();
m_content = (char *) malloc(m_size+1); m_content = (char *) malloc(m_size+1);
fin->Read(m_content, m_size); fin->Read(m_content, m_size);

View File

@@ -1386,10 +1386,10 @@ bool wxXPMFileHandler::LoadFile(wxBitmap *bitmap, const wxString& name,
#elif wxUSE_STREAMS #elif wxUSE_STREAMS
wxXPMDecoder decoder; wxXPMDecoder decoder;
wxFileInputStream stream(name); wxFileInputStream stream(name);
if (stream.Ok()) if (stream.IsOk())
{ {
wxImage image(decoder.ReadFile(stream)); wxImage image(decoder.ReadFile(stream));
return image.Ok() && bitmap->CreateFromImage(image); return image.IsOk() && bitmap->CreateFromImage(image);
} }
return false; return false;

View File

@@ -497,7 +497,7 @@ bool wxXmlResource::UpdateResources()
delete rec->Doc; delete rec->Doc;
rec->Doc = new wxXmlDocument; 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'."), wxLogError(_("Cannot load resources from file '%s'."),
rec->File); rec->File);