summaryrefslogtreecommitdiff
path: root/backend/epub
diff options
context:
space:
mode:
Diffstat (limited to 'backend/epub')
-rw-r--r--backend/epub/epub-document.c23
1 files changed, 20 insertions, 3 deletions
diff --git a/backend/epub/epub-document.c b/backend/epub/epub-document.c
index 49da8c1a..d1cd9095 100644
--- a/backend/epub/epub-document.c
+++ b/backend/epub/epub-document.c
@@ -1600,13 +1600,17 @@ epub_document_toggle_night_mode(EvDocument *document,gboolean night)
static gchar*
epub_document_set_document_title(gchar *containeruri)
{
- open_xml_document(containeruri);
- gchar *doctitle;
+ if (open_xml_document(containeruri) == FALSE)
+ return NULL;
+
+ gchar *doctitle = NULL;
set_xml_root_node(NULL);
xmlNodePtr title = xml_get_pointer_to_node((xmlChar*)"title",NULL,NULL);
- doctitle = (gchar*)xml_get_data_from_node(title, XML_KEYWORD, NULL);
+ if (title != NULL)
+ doctitle = (gchar*)xml_get_data_from_node(title, XML_KEYWORD, NULL);
+
xml_free_doc();
return doctitle;
@@ -1758,6 +1762,19 @@ epub_document_load (EvDocument* document,
return FALSE;
}
+ gchar *contentOpfPath = g_filename_from_uri(contentOpfUri,NULL,NULL);
+ if (contentOpfPath == NULL || !g_file_test(contentOpfPath, G_FILE_TEST_IS_REGULAR))
+ {
+ g_free (contentOpfPath);
+ g_free (contentOpfUri);
+ g_set_error_literal(error,
+ EV_DOCUMENT_ERROR,
+ EV_DOCUMENT_ERROR_INVALID,
+ _("could not find epub content"));
+ return FALSE;
+ }
+ g_free (contentOpfPath);
+
epub_document->docTitle = epub_document_set_document_title(contentOpfUri);
epub_document->index = setup_document_index(epub_document,contentOpfUri);