summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorL Peter Deutsch <lpd@ghostscript.com>2000-04-04 22:16:02 +0000
committerL Peter Deutsch <lpd@ghostscript.com>2000-04-04 22:16:02 +0000
commit1f6f50f694aca2e271d8e9c8da3df72c277a085f (patch)
tree66bc3e15b9415820667a055bda6bbb2cef966271
parent5dbebef729842941f079c0f6c63c64757f518a31 (diff)
downloadghostpdl-1f6f50f694aca2e271d8e9c8da3df72c277a085f.tar.gz
Fix: The internaldict "operator" was allocated in local VM, preventing it
from being bound into procedures allocated in global VM. git-svn-id: http://svn.ghostscript.com/ghostscript/trunk@242 a1074d23-0009-0410-80fe-cf8c14f379e6
-rw-r--r--gs/lib/gs_init.ps11
1 files changed, 8 insertions, 3 deletions
diff --git a/gs/lib/gs_init.ps b/gs/lib/gs_init.ps
index 01bcd4b9f..1b7b1a703 100644
--- a/gs/lib/gs_init.ps
+++ b/gs/lib/gs_init.ps
@@ -470,13 +470,18 @@ currentdict /.typenames .undef
//.wheredict 1 index .knownget { exec } { .where } ifelse
} odef
-% internaldict is defined in systemdict, but is allocated in local VM.
+% internaldict is defined in systemdict, but the dictionary is allocated
+% in local VM. However, the procedure must be global, since it is an
+% "operator" and must be bind-able into global procedures.
% We make a procedure for creating it, since we must create a new one
% for each context with private local VM.
/.makeinternaldict {
- .currentglobal false .setglobal
+ .currentglobal true .setglobal
[ /dup .systemvar 1183615869 /eq .systemvar
- [ /pop .systemvar 10 dict ] cvx
+ [ /pop .systemvar null ] cvx
+ false .setglobal
+ dup 1 10 dict .forceput % proc is global, dict is local
+ true .setglobal
[ /internaldict /cvx .systemvar /invalidaccess /signalerror cvx ] cvx
/ifelse .systemvar
] cvx executeonly