From 3902bcf1103b559bf918b132aa9d84e680a062cc Mon Sep 17 00:00:00 2001 From: Christian Persch Date: Sun, 15 Feb 2009 13:53:34 +0000 Subject: 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 --- (limited to 'libdocument') diff --git a/libdocument/ev-document.c b/libdocument/ev-document.c index 3356dc2..b230b70 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; } -- cgit v0.9.1