check for wxInputStream::Read errors
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58082 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
d8359d3ca0
commit
74be3634b9
@ -116,7 +116,8 @@ bool wxAnimation::Load(wxInputStream &stream, wxAnimationType type)
|
||||
else
|
||||
loader = gdk_pixbuf_loader_new();
|
||||
|
||||
if (!loader)
|
||||
if (!loader ||
|
||||
error != NULL) // even if the loader was allocated, an error could have happened
|
||||
{
|
||||
wxLogDebug(wxT("Could not create the loader for '%s' animation type: %s"),
|
||||
anim_type, error->message);
|
||||
@ -131,16 +132,20 @@ bool wxAnimation::Load(wxInputStream &stream, wxAnimationType type)
|
||||
while (stream.IsOk())
|
||||
{
|
||||
// read a chunk of data
|
||||
stream.Read(buf, sizeof(buf));
|
||||
if (!stream.Read(buf, sizeof(buf)))
|
||||
{
|
||||
// gdk_pixbuf_loader_close wants the GError == NULL
|
||||
gdk_pixbuf_loader_close(loader, NULL);
|
||||
return false;
|
||||
}
|
||||
|
||||
// fetch all data into the loader
|
||||
if (!gdk_pixbuf_loader_write(loader, buf, stream.LastRead(), &error))
|
||||
{
|
||||
wxLogDebug(wxT("Could not write to the loader: %s"), error->message);
|
||||
|
||||
// gdk_pixbuf_loader_close wants the GError == NULL; reset it:
|
||||
error = NULL;
|
||||
gdk_pixbuf_loader_close(loader, &error);
|
||||
// gdk_pixbuf_loader_close wants the GError == NULL
|
||||
gdk_pixbuf_loader_close(loader, NULL);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user