diff options
author | Rafael Garcia-Suarez <rgarciasuarez@gmail.com> | 2005-11-05 10:13:56 +0000 |
---|---|---|
committer | Rafael Garcia-Suarez <rgarciasuarez@gmail.com> | 2005-11-05 10:13:56 +0000 |
commit | 8400cfc39f5aaecb3f31c92529b223aab4f98ae1 (patch) | |
tree | b60e86663b0a6889adff7fd83ad0ab3ab9fe89d1 /pod/perlcall.pod | |
parent | b59aed6733cbdee6d898449f638bd7a17e772993 (diff) | |
download | perl-8400cfc39f5aaecb3f31c92529b223aab4f98ae1.tar.gz |
Remove the obsolete KNOWN PROBLEMS sections from perlcall.pod
(noticed by Robin Houston)
p4raw-id: //depot/perl@26012
Diffstat (limited to 'pod/perlcall.pod')
-rw-r--r-- | pod/perlcall.pod | 67 |
1 files changed, 0 insertions, 67 deletions
diff --git a/pod/perlcall.pod b/pod/perlcall.pod index fb5ea37f0f..4b77359e25 100644 --- a/pod/perlcall.pod +++ b/pod/perlcall.pod @@ -366,73 +366,6 @@ called C<GIMME>; in a void context it returns C<G_SCALAR> instead of C<G_VOID>. An example of using the C<GIMME_V> macro is shown in section I<Using GIMME_V>. -=head1 KNOWN PROBLEMS - -This section outlines all known problems that exist in the -I<call_*> functions. - -=over 5 - -=item 1. - -If you are intending to make use of both the G_EVAL and G_SCALAR flags -in your code, use a version of Perl greater than 5.000. There is a bug -in version 5.000 of Perl which means that the combination of these two -flags will not work as described in the section I<FLAG VALUES>. - -Specifically, if the two flags are used when calling a subroutine and -that subroutine does not call I<die>, the value returned by -I<call_*> will be wrong. - - -=item 2. - -In Perl 5.000 and 5.001 there is a problem with using I<call_*> if -the Perl sub you are calling attempts to trap a I<die>. - -The symptom of this problem is that the called Perl sub will continue -to completion, but whenever it attempts to pass control back to the -XSUB, the program will immediately terminate. - -For example, say you want to call this Perl sub - - sub fred - { - eval { die "Fatal Error" ; } - print "Trapped error: $@\n" - if $@ ; - } - -via this XSUB - - void - Call_fred() - CODE: - PUSHMARK(SP) ; - call_pv("fred", G_DISCARD|G_NOARGS) ; - fprintf(stderr, "back in Call_fred\n") ; - -When C<Call_fred> is executed it will print - - Trapped error: Fatal Error - -As control never returns to C<Call_fred>, the C<"back in Call_fred"> -string will not get printed. - -To work around this problem, you can either upgrade to Perl 5.002 or -higher, or use the G_EVAL flag with I<call_*> as shown below - - void - Call_fred() - CODE: - PUSHMARK(SP) ; - call_pv("fred", G_EVAL|G_DISCARD|G_NOARGS) ; - fprintf(stderr, "back in Call_fred\n") ; - -=back - - - =head1 EXAMPLES Enough of the definition talk, let's have a few examples. |