From 3902bcf1103b559bf918b132aa9d84e680a062cc Mon Sep 17 00:00:00 2001 From: Christian Persch Date: Sun, 15 Feb 2009 13:53:34 +0000 Subject: [PATCH] Add code to catch backends incorrectly implementing the load vfunc. * libdocument/ev-document.c: (ev_document_load): Add code to catch backends incorrectly implementing the load vfunc. svn path=/trunk/; revision=3460 --- ChangeLog | 5 +++++ libdocument/ev-document.c | 19 +++++++++++++++++-- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1721e2fc..7b78906f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2009-02-14 Christian Persch + + * libdocument/ev-document.c: (ev_document_load): Add code to catch + backends incorrectly implementing the load vfunc. + 2009-02-14 Christian Persch * libdocument/ev-document-factory.c: diff --git a/libdocument/ev-document.c b/libdocument/ev-document.c index 3356dc2e..b230b706 100644 --- a/libdocument/ev-document.c +++ b/libdocument/ev-document.c @@ -120,8 +120,23 @@ ev_document_load (EvDocument *document, { EvDocumentIface *iface = EV_DOCUMENT_GET_IFACE (document); gboolean retval; - - retval = iface->load (document, uri, error); + GError *err = NULL; + + retval = iface->load (document, uri, &err); + if (!retval) { + if (err) { + g_propagate_error (error, err); + } else { + g_warning ("%s::EvDocumentIface::load returned FALSE but did not fill in @error; fix the backend!\n", + G_OBJECT_TYPE_NAME (document)); + + /* So upper layers don't crash */ + g_set_error_literal (error, + EV_DOCUMENT_ERROR, + EV_DOCUMENT_ERROR_INVALID, + "Internal error in backend"); + } + } return retval; } -- 2.43.0