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:
@@ -116,7 +116,8 @@ bool wxAnimation::Load(wxInputStream &stream, wxAnimationType type)
|
|||||||
else
|
else
|
||||||
loader = gdk_pixbuf_loader_new();
|
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"),
|
wxLogDebug(wxT("Could not create the loader for '%s' animation type: %s"),
|
||||||
anim_type, error->message);
|
anim_type, error->message);
|
||||||
@@ -131,16 +132,20 @@ bool wxAnimation::Load(wxInputStream &stream, wxAnimationType type)
|
|||||||
while (stream.IsOk())
|
while (stream.IsOk())
|
||||||
{
|
{
|
||||||
// read a chunk of data
|
// 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
|
// fetch all data into the loader
|
||||||
if (!gdk_pixbuf_loader_write(loader, buf, stream.LastRead(), &error))
|
if (!gdk_pixbuf_loader_write(loader, buf, stream.LastRead(), &error))
|
||||||
{
|
{
|
||||||
wxLogDebug(wxT("Could not write to the loader: %s"), error->message);
|
wxLogDebug(wxT("Could not write to the loader: %s"), error->message);
|
||||||
|
|
||||||
// gdk_pixbuf_loader_close wants the GError == NULL; reset it:
|
// gdk_pixbuf_loader_close wants the GError == NULL
|
||||||
error = NULL;
|
gdk_pixbuf_loader_close(loader, NULL);
|
||||||
gdk_pixbuf_loader_close(loader, &error);
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user