On Thu, Apr 13, 2006 at 09:23:33PM +0300, Niko Tyni wrote:
 
> the segfault actually happens in Term::Readline::Gnu, and it's a side
> effect of the fix for #236018.
> 
> I'll try to come up with a better patch.

The attached patch is an even worse kludge than the previous fix. I'm
wondering whether I should rather revert the previous one and blame
the Perl debugger.

I'll get back to this later, but here's the patch for reference.

Cheers,
-- 
Niko Tyni       [EMAIL PROTECTED]
#! /bin/sh /usr/share/dpatch/dpatch-run
## 30outstream.dpatch by Niko Tyni <[EMAIL PROTECTED]>
##
## All lines beginning with `## DP:' are a description of the patch.
## DP: Fix SIGSEGV after "|" command. (#236018)

@DPATCH@
diff -urNad trunk~/Gnu.pm trunk/Gnu.pm
--- trunk~/Gnu.pm       2006-01-15 19:34:52.835305578 +0200
+++ trunk/Gnu.pm        2006-01-15 19:34:57.369527534 +0200
@@ -278,6 +278,10 @@
     my $self = shift;
     my ($prompt, $preput) = @_;
 
+    # make sure the outstream fd inside the readline library is
+    # in sync (see http://bugs.debian.org/236018)
+    $Attribs{outstream} = $Attribs{outstream};
+
     # ornament support (now prompt only)
     $prompt = ${$Attribs{term_set}}[0] . $prompt . ${$Attribs{term_set}}[1];
 
--- libterm-readline-gnu-perl-1.16.orig/Gnu.xs
+++ libterm-readline-gnu-perl-1.16/Gnu.xs
@@ -2674,6 +2674,9 @@
            if (outstreamPIO != NULL)
              PerlIO_releaseFILE(outstreamPIO, rl_outstream);
            rl_outstream = PerlIO_findFILE(stream);
+           if (!rl_outstream)
+             rl_outstream = stdout;
+
            RETVAL = outstreamPIO = stream;
 #ifdef __CYGWIN__
            {

Reply via email to