PERL_GET_CONTEXT ist undokumentiert, daher kann man sich wohl nicht uneingeschränkt darauf verlassen, dass es sich immer so verhält.
Was feststeht ist, dass
perl_clone den neuen Interpreter zurückgibt, also könnte man ja schlicht
PerlInterpreter *pi = perl_clone(...);
PERL_SET_CONTEXT(pi);
schreiben, um sicherzugehen. Oder natürlich
PerlInterpreter *pi_orig = PERL_GET_CONTEXT;
PerlInterpreter *pi_clone = perl_clone(pi_orig, ...);
PERL_SET_CONTEXT(pi_orig);
wenn man das gerade verhindern will.
When C++ is your hammer, every problem looks like your thumb.