Submitted By:            Agathoklis Hatzimanikas <ag at linuxfromscratch dot org>
Date:                    2010-01-25
Initial Package Version: 0.1.7
Upstream Status:         Applied
Origin:                  Upstream
Description:             http://trac.emma-soft.com/epdfview/ticket/116

diff -Naur epdfview-0.1.7.orig/src/PDFDocument.cxx epdfview-0.1.7/src/PDFDocument.cxx
--- epdfview-0.1.7.orig/src/PDFDocument.cxx	2009-02-28 23:00:35.000000000 +0200
+++ epdfview-0.1.7/src/PDFDocument.cxx	2010-01-25 12:46:59.133636329 +0200
@@ -246,23 +246,25 @@
     // Check if the document couldn't be opened successfully and why.
     if ( NULL == newDocument )
     {
-        // Poppler's glib wrapper passes the Poppler error code unless the
-        // error is that the file is encrypted. We want to set our own
-        // error code in this case.
         DocumentError errorCode = DocumentErrorNone;
-        if ( POPPLER_ERROR == loadError->domain )
+        switch ( loadError->code )
         {
-            errorCode = DocumentErrorEncrypted;
-        }
-        else
-        {
-            // OK, the glib's wrapper don't pass the error code directly
-            // from Poppler. Instead returns G_FILE_ERROR_FAILED and a
-            // non translated string.
-            // Maybe I'm wrong (very probable) but that's a wrong way.
-            // So I'm reading the error code from the error string...
-            sscanf (loadError->message, "Failed to load document (error %d)",
-                    (gint *)&errorCode);
+            case POPPLER_ERROR_OPEN_FILE:
+            case POPPLER_ERROR_INVALID:
+                errorCode = DocumentErrorOpenFile;
+                break;
+
+            case POPPLER_ERROR_BAD_CATALOG:
+                errorCode = DocumentErrorBadCatalog;
+                break;
+
+            case POPPLER_ERROR_DAMAGED:
+                errorCode = DocumentErrorDamaged;
+                break;
+
+            case POPPLER_ERROR_ENCRYPTED:
+                errorCode = DocumentErrorEncrypted;
+                break;
         }
         g_error_free (loadError);
         // Get our error message.
