From 74be3634b94f3febb0147cde99580e0344b8e74d Mon Sep 17 00:00:00 2001 From: Francesco Montorsi Date: Tue, 13 Jan 2009 19:25:32 +0000 Subject: [PATCH] check for wxInputStream::Read errors git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58082 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/gtk/animate.cpp | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/gtk/animate.cpp b/src/gtk/animate.cpp index 02e2886873..e987f0f568 100644 --- a/src/gtk/animate.cpp +++ b/src/gtk/animate.cpp @@ -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; } -- 2.47.2