Bug#486069: perl: embedding perl hangs on hppa without PERL_SYS_INIT3() since 5.10.0
rra at stanford.edu
Sat Jun 28 18:15:33 UTC 2008
Julien ÉLIE <julien at trigofacile.com> writes:
> I do not know whether PERL_SYS_INIT3() is in Perl 5.004_03 (as INN is said
> to compile with it).
Hm, yeah, it may not be around before Perl 5.8, even. You could try
checking with #ifdef before calling it, since the capital letters would
imply it's a macro.
> I do not know why there is that comment just below the definition of sub
> _load_ and sub _eval_:
> /* We can't call 'eval' and 'do' directly for some reason, so we define
> some wrapper functions to give us access. */
> Maybe eval_pv does not work for what we need?
I wish I could remember all the investigation I did of this at some point.
I figured out what the problem was and how to fix it, and then I didn't
write it down. :/
I think I may have decided that the code had previously tried to use
perl_call_argv directly on eval or do, which of course doesn't work
because they're weird built-ins and not subs.
> + /* The Perl expression which will be evaluated. */
> + asprintf(&evalfile, "do %s", startupfile);
You need some quoting here of the file and in any other similar place.
That may be the problem.
> - rc = perl_call_argv ("_load_",G_DISCARD, argv) ;
> + eval_pv(evalfile, TRUE);
I'm not *sure* on this, but this possibly should be perl_eval_pv to be
safer (although either probably works). I don't remember exactly how the
namespacing works when embedding.
Russ Allbery (rra at stanford.edu) <http://www.eyrie.org/~eagle/>
Please send questions to the list rather than mailing me directly.
<http://www.eyrie.org/~eagle/faqs/questions.html> explains why.
More information about the inn-workers