From a554f8e3595152cd2afa33c6a2a368f6469509de Mon Sep 17 00:00:00 2001 From: Nickolay V. Shmyrev Date: Thu, 17 Aug 2006 07:20:47 +0000 Subject: More correct handling of document loading. Fixes bug #349043. 2006-08-17 Nickolay V. Shmyrev * backend/ev-document-factory.c: (ev_document_factory_get_document): * tiff/tiff-document.c: (tiff_document_finalize): More correct handling of document loading. Fixes bug #349043. --- (limited to 'backend') diff --git a/backend/ev-document-factory.c b/backend/ev-document-factory.c index 23364a2..278a21a 100644 --- a/backend/ev-document-factory.c +++ b/backend/ev-document-factory.c @@ -287,27 +287,48 @@ EvDocument * ev_document_factory_get_document (const char *uri, GError **error) { EvDocument *document; + int result; document = get_document_from_uri (uri, FALSE, error); - if (*error == NULL) { - ev_document_load (document, uri, error); + if (*error != NULL) { + return NULL; } + + result = ev_document_load (document, uri, error); - if (*error) { - g_error_free (*error); - *error = NULL; + if (result == FALSE || *error) { + if (document) + g_object_unref (document); + document = NULL; } else { return document; } + if (*error) + g_error_free (*error); + *error = NULL; + document = get_document_from_uri (uri, TRUE, error); if (*error != NULL) { return NULL; } - ev_document_load (document, uri, error); + result = ev_document_load (document, uri, error); + + if (result == FALSE || *error) { + if (document) + g_object_unref (document); + document = NULL; + } + + if (result == FALSE && *error == NULL) { + g_set_error (error, + EV_DOCUMENT_ERROR, + 0, + _("Unknown MIME Type")); + } return document; } -- cgit v0.9.1