From: Francesco Montorsi Date: Sun, 11 Jan 2009 00:42:13 +0000 (+0000) Subject: do not return true when no data is read by the stream in Load(wxInputStream,wxAnimati... X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/1ab88038785eb2d6a7f89129a506826bf6887cc6 do not return true when no data is read by the stream in Load(wxInputStream,wxAnimationType) overload git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58005 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/src/gtk/animate.cpp b/src/gtk/animate.cpp index 8cf11f0e99..02e2886873 100644 --- a/src/gtk/animate.cpp +++ b/src/gtk/animate.cpp @@ -127,6 +127,7 @@ bool wxAnimation::Load(wxInputStream &stream, wxAnimationType type) g_signal_connect(loader, "area-updated", G_CALLBACK(gdk_pixbuf_area_updated), this); guchar buf[2048]; + bool data_written = false; while (stream.IsOk()) { // read a chunk of data @@ -135,10 +136,21 @@ bool wxAnimation::Load(wxInputStream &stream, wxAnimationType type) // fetch all data into the loader if (!gdk_pixbuf_loader_write(loader, buf, stream.LastRead(), &error)) { - gdk_pixbuf_loader_close(loader, &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); return false; } + + data_written = true; + } + + if (!data_written) + { + wxLogDebug("Could not read data from the stream..."); + return false; } // load complete @@ -149,7 +161,7 @@ bool wxAnimation::Load(wxInputStream &stream, wxAnimationType type) } // wait until we get the last area_updated signal - return true; + return data_written; } wxImage wxAnimation::GetFrame(unsigned int WXUNUSED(frame)) const