summaryrefslogtreecommitdiff
path: root/psi
diff options
context:
space:
mode:
authorKen Sharp <ken.sharp@artifex.com>2022-08-03 09:49:26 +0100
committerKen Sharp <ken.sharp@artifex.com>2022-08-03 09:49:46 +0100
commit7c6d09d2831d6831941a04195d070a258a835586 (patch)
treedc5839e2bcabe0d954c0177f754264ca9bf3f091 /psi
parent9c50f29f49e3fdc8a2c6bcd0d46473e32135cd60 (diff)
downloadghostpdl-7c6d09d2831d6831941a04195d070a258a835586.tar.gz
Coverity ID 379504 - check return code
We weren't checking the return code from pdfi_loop_detector_add_object but on inspection there was redundant code (mark/cleartomark) which this commit also removes. I've also disabled the debugging print code behind its own #if because it was making the debugging noisy.
Diffstat (limited to 'psi')
-rw-r--r--psi/zpdfops.c55
1 files changed, 38 insertions, 17 deletions
diff --git a/psi/zpdfops.c b/psi/zpdfops.c
index 5d06b7931..a8e548c83 100644
--- a/psi/zpdfops.c
+++ b/psi/zpdfops.c
@@ -631,8 +631,31 @@ static int zPDFclose(i_ctx_t *i_ctx_p)
static int PDFobj_to_PSobj(i_ctx_t *i_ctx_p, pdfctx_t *pdfctx, pdf_obj *PDFobj, ref *PSobj);
+#define DEBUG_INFO_DICT 0
+
+static void debug_printmark(int type)
+{
+#if DEBUG_INFO_DICT
+ switch(type) {
+ case 0:
+ dbgprintf("<<\n");
+ break;
+ case 1:
+ dbgprintf(">>\n");
+ break;
+ case 2:
+ dbgprintf("[");
+ break;
+ case 3:
+ dbgprintf("]\n");
+ break;
+ }
+#endif
+}
+
static void debug_pdfobj(i_ctx_t *i_ctx_p, pdfctx_t *pdfctx, pdf_obj *PDFobj)
{
+#if DEBUG_INFO_DICT
char *str = NULL;
int code = 0, len = 0;
@@ -669,6 +692,7 @@ static void debug_pdfobj(i_ctx_t *i_ctx_p, pdfctx_t *pdfctx, pdf_obj *PDFobj)
default:
break;
}
+#endif
}
static int PDFdict_to_PSdict(i_ctx_t *i_ctx_p, pdfctx_t *pdfctx, pdf_dict *PDFdict, ref *PSdict)
@@ -714,7 +738,6 @@ static int PDFdict_to_PSdict(i_ctx_t *i_ctx_p, pdfctx_t *pdfctx, pdf_dict *PDFdi
if (code < 0)
goto error;
- dbgprintf("\n");
pdfi_countdown(Key);
pdfi_countdown(Value);
Key = NULL;
@@ -851,26 +874,24 @@ static int PDFobj_to_PSobj(i_ctx_t *i_ctx_p, pdfctx_t *pdfctx, pdf_obj *PDFobj,
}
break;
case PDF_DICT:
- code = pdfi_loop_detector_mark(pdfctx->ctx);
- if (code < 0)
- goto error;
- if (PDFobj->object_num != 0)
- pdfi_loop_detector_add_object(pdfctx->ctx, PDFobj->object_num);
- dbgprintf("<<\n");
+ if (PDFobj->object_num != 0) {
+ code = pdfi_loop_detector_add_object(pdfctx->ctx, PDFobj->object_num);
+ if (code < 0)
+ goto error;
+ }
+ debug_printmark(0);
code = PDFdict_to_PSdict(i_ctx_p, pdfctx, (pdf_dict *)PDFobj, PSobj);
- dbgprintf(">>\n");
- pdfi_loop_detector_cleartomark(pdfctx->ctx);
+ debug_printmark(1);
break;
case PDF_ARRAY:
- code = pdfi_loop_detector_mark(pdfctx->ctx);
- if (code < 0)
- goto error;
- if (PDFobj->object_num != 0)
- pdfi_loop_detector_add_object(pdfctx->ctx, PDFobj->object_num);
- dbgprintf("[ ");
+ if (PDFobj->object_num != 0) {
+ code = pdfi_loop_detector_add_object(pdfctx->ctx, PDFobj->object_num);
+ if (code < 0)
+ goto error;
+ }
+ debug_printmark(2);
code = PDFarray_to_PSarray(i_ctx_p, pdfctx, (pdf_array *)PDFobj, PSobj);
- dbgprintf("]\n");
- pdfi_loop_detector_cleartomark(pdfctx->ctx);
+ debug_printmark(3);
break;
default:
make_null(PSobj);