summaryrefslogtreecommitdiff
path: root/psi/zvmem.c
diff options
context:
space:
mode:
authorJulian Smith <jules@op59.net>2020-02-20 11:18:11 +0000
committerJulian Smith <jules@op59.net>2020-02-20 14:40:04 +0000
commitfbcf5865f688201fba239c5dde0078e6733538c4 (patch)
tree1ce3b2066cd2c16d402ac0335ebb9516830fe8db /psi/zvmem.c
parent356e24a53c60710ecfee991bb91cd503e3d9873b (diff)
downloadghostpdl-fbcf5865f688201fba239c5dde0078e6733538c4.tar.gz
Fix for MEMENTO_FAILAT=115802: make gs_gsave_for_save() call gs_gsave() so it can restore after error.
Previously, zsave() called gs_gsave_for_save() then gs_gsave(), but if gs_gsave() failed we ended up with SEGV in finalise code. To allow zsave() to restore things after gs_gsave() failure, we would need to add an include of base/gxgstate.h. Instead we remove the call of gs_gsave() from zsave() and append it to gs_gsave_for_save(), where things can be easily restored if it fails. [There are no other callers of gs_gsave_for_save().] Fixes: MEMENTO_FAILAT=115802 LD_LIBRARY_PATH=../libbacktrace/.libs ./membin/gpdl -sDEVICE=bit -o /dev/null examples/tiger.eps
Diffstat (limited to 'psi/zvmem.c')
-rw-r--r--psi/zvmem.c3
1 files changed, 0 insertions, 3 deletions
diff --git a/psi/zvmem.c b/psi/zvmem.c
index b6e366fa6..5c0810f3e 100644
--- a/psi/zvmem.c
+++ b/psi/zvmem.c
@@ -84,9 +84,6 @@ zsave(i_ctx_t *i_ctx_p)
code = gs_gsave_for_save(igs, &prev);
if (code < 0)
return code;
- code = gs_gsave(igs);
- if (code < 0)
- return code;
vmsave->gsave = prev;
push(1);
make_tav(op, t_save, 0, saveid, sid);