Here's a naive first go at a patch.  Let me know if you'd like more help
- dpkg's perl can be difficult, and more hands may make it easier.

Take care,
-- 
 --------------------------------------------------------------------------
|  Stephen Gran                  | One good turn usually gets most of the  |
|  [EMAIL PROTECTED]             | blanket.                                |
|  http://www.lobefin.net/~steve |                                         |
 --------------------------------------------------------------------------
diff -Nru /tmp/Jef2swUUSO/dpkg-1.14.2/scripts/update-alternatives.pl /tmp/4pLagNt3Px/dpkg-1.14.3/scripts/update-alternatives.pl
--- /tmp/Jef2swUUSO/dpkg-1.14.2/scripts/update-alternatives.pl	2007-05-09 18:58:40.000000000 +0100
+++ /tmp/4pLagNt3Px/dpkg-1.14.3/scripts/update-alternatives.pl	2007-05-13 00:08:03.000000000 +0100
@@ -458,7 +458,7 @@
 for (my $j = 0; $j <= $#slavenames; $j++) {
     my $i;
     for ($i = 0; $i <= $#versions; $i++) {
-        last if $slavepath{$i,$j} ne '';
+        last if (defined($slavepath{$i,$j}) && $slavepath{$i,$j} ne '');
     }
     if ($i > $#versions) {
         &pr(sprintf(_g("Discarding obsolete slave link %s (%s)."), $slavenames[$j], $slavelinks[$j]))
@@ -589,7 +589,7 @@
             rename_mv("$slink.dpkg-tmp",$slink) ||
                 &quit(sprintf(_g("unable to install %s as %s: %s"), "$slink.dpkg-tmp", $slink, $!));
         }
-        $spath= $slavepath{$bestnum,$j};
+        $spath= $slavepath{$bestnum,$j} || '';
         unlink("$altdir/$sname.dpkg-tmp") || $! == &ENOENT ||
             &quit(sprintf(_g("unable to ensure %s nonexistent: %s"), "$altdir/$sname.dpkg-tmp", $!));
         if ($spath eq '') {
@@ -714,6 +714,10 @@
 
 sub pr { print(STDOUT "@_\n") || &quit(sprintf(_g("error writing stdout: %s"), $!)); }
 sub paf {
+    unless (defined($_) && length($_)) {
+        print AF "\n";
+        return;
+    }
     $_[0] =~ m/\n/ && &quit(sprintf(_g("newlines prohibited in update-alternatives files (%s)"), $_[0]));
     print(AF "$_[0]\n") || &quit(sprintf(_g("error writing stdout: %s"), $!));
 }

Attachment: signature.asc
Description: Digital signature

Reply via email to