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:
/**
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);
};

View File

@@ -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);

View File

@@ -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);
}

View File

@@ -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);
}

View File

@@ -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);

View File

@@ -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;

View File

@@ -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);