current cvs HEAD fails on $ ps2pdf13 f1.eps with "Error: /dictfull in --image--" the figure can be found at http://xxx.lanl.gov/ftp/exports/f1.eps This started with the changes documented at http://ghostscript.com/pipermail/gs-cvs/2005-February/005223.html gs8.51 cvs co prior 2/16/05 generates good pdf from this figure. more precisely reverting 3 files from current HEAD to earlier revisions, namely gdevpdfj.c 1.36 gdevpdfg.h 1.39 gdevpdfi.c 1.60 makes the problem go away. Hope this helps. Cheers T.
Meanwhile I have come across many more postscript figures which trigger this problem, see http://xxx.lanl.gov/ftp/exports/dictfull.tar.gz for a selection. All of these figures have a common Creator string: %%Creator: Tk Canvas Widget Cheers T.
dictfull (= -2) cannot happen in Level 2 PostScript. Most likely the ERRC (= -2) stream exception get propagated to the interpreter level.
still applies to current cvs head 04/17/05 this affects a lot of figures from the commonly used Tk Canvas Widget for a lot of authors submitting to http://arXiv.org/ changing # cvs diff src/gdevpdfj.c Index: src/gdevpdfj.c =================================================================== RCS file: /cvs/ghostscript/gs/src/gdevpdfj.c,v retrieving revision 1.43 diff -r1.43 gdevpdfj.c 409c409 < if (piw->binary[0].strm->procs.process == s_DCTE_template.process) { --- > if (!(piw->binary[0].strm->procs.process == s_DCTE_template.process)) { makes this problem go away T.
Igor, Please review my patch. The problem file uses png with a miss-specified height vs data, so we are handling a garbage in case. (gdb) p piw->height $1 = 1842 (gdb) p data_h $2 = 1841 Either the streams should all handle this or non of them should. In the mean time this patch fixes the problem. Index: gdevpdfj.c =================================================================== RCS file: /cvs/ghostscript/gs/src/gdevpdfj.c,v retrieving revision 1.43 diff -u -r1.43 gdevpdfj.c --- gdevpdfj.c 4 Apr 2005 20:28:27 -0000 1.43 +++ gdevpdfj.c 18 Apr 2005 15:19:42 -0000 @@ -26,6 +26,7 @@ #include "gxcspace.h" #include "gsiparm4.h" #include "gdevpsds.h" +#include "spngpx.h" #define CHECK(expr)\ BEGIN if ((code = (expr)) < 0) return code; END @@ -406,8 +407,9 @@ int width, int bits_per_pixel) { if (data_h != piw->height) { - if (piw->binary[0].strm->procs.process == s_DCTE_template.process) { - /* Since DCTE can't safely close with incomplete data, + if (piw->binary[0].strm->procs.process == s_DCTE_template.process || + piw->binary[0].strm->procs.process == s_PNGPE_template.process ) { + /* Since DCTE and PNGPE can't safely close with incomplete data, we add stub data to complete the stream. */ int bytes_per_line = (width * bits_per_pixel + 7) / 8;
Stefan, Your patch looks good. Please copmmit if it doesn't contradict to the code freeze state (comply with Ray or Raph).
Commited Post gs 8.51