summaryrefslogtreecommitdiff
path: root/glib
diff options
context:
space:
mode:
authorCarlos Garcia Campos <carlosgc@gnome.org>2009-03-02 09:54:22 +0100
committerCarlos Garcia Campos <carlosgc@gnome.org>2009-03-02 09:54:22 +0100
commitdac0542eb793603090416f1b7712ca08253f1e7f (patch)
tree392bcaf7e8be7fa8dfc62ea810ecd8bd81d92f83 /glib
parentbfc6572614727565d883b9545d4b6665f3c2fdfe (diff)
[glib] Correctly handle doc->saveAs() error code.
Fixes bug #19915.
Diffstat (limited to 'glib')
-rw-r--r--glib/poppler-document.cc37
1 files changed, 33 insertions, 4 deletions
diff --git a/glib/poppler-document.cc b/glib/poppler-document.cc
index 6402e698..387f7d12 100644
--- a/glib/poppler-document.cc
+++ b/glib/poppler-document.cc
@@ -219,6 +219,33 @@ poppler_document_new_from_data (char *data,
return _poppler_document_new_from_pdfdoc (newDoc, error);
}
+static gboolean
+handle_save_error (int err_code,
+ GError **error)
+{
+ switch (err_code)
+ {
+ case errNone:
+ break;
+ case errOpenFile:
+ g_set_error (error, POPPLER_ERROR,
+ POPPLER_ERROR_OPEN_FILE,
+ "Failed to open file for writing");
+ break;
+ case errEncrypted:
+ g_set_error (error, POPPLER_ERROR,
+ POPPLER_ERROR_ENCRYPTED,
+ "Document is encrypted");
+ break;
+ default:
+ g_set_error (error, POPPLER_ERROR,
+ POPPLER_ERROR_INVALID,
+ "Failed to save document");
+ }
+
+ return err_code == errNone;
+}
+
/**
* poppler_document_save:
* @document: a #PopplerDocument
@@ -245,10 +272,11 @@ poppler_document_save (PopplerDocument *document,
filename = g_filename_from_uri (uri, NULL, error);
if (filename != NULL) {
GooString *fname = new GooString (filename);
+ int err_code;
g_free (filename);
- retval = document->doc->saveAs (fname);
-
+ err_code = document->doc->saveAs (fname);
+ retval = handle_save_error (err_code, error);
delete fname;
}
@@ -282,10 +310,11 @@ poppler_document_save_a_copy (PopplerDocument *document,
filename = g_filename_from_uri (uri, NULL, error);
if (filename != NULL) {
GooString *fname = new GooString (filename);
+ int err_code;
g_free (filename);
- retval = document->doc->saveWithoutChangesAs (fname);
-
+ err_code = document->doc->saveWithoutChangesAs (fname);
+ retval = handle_save_error (err_code, error);
delete fname;
}