diff options
author | Carlos Garcia Campos <carlosgc@gnome.org> | 2009-03-02 09:54:22 +0100 |
---|---|---|
committer | Carlos Garcia Campos <carlosgc@gnome.org> | 2009-03-02 09:54:22 +0100 |
commit | dac0542eb793603090416f1b7712ca08253f1e7f (patch) | |
tree | 392bcaf7e8be7fa8dfc62ea810ecd8bd81d92f83 /glib | |
parent | bfc6572614727565d883b9545d4b6665f3c2fdfe (diff) |
[glib] Correctly handle doc->saveAs() error code.
Fixes bug #19915.
Diffstat (limited to 'glib')
-rw-r--r-- | glib/poppler-document.cc | 37 |
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; } |