Package: release.debian.org
Severity: normal
User: release.debian....@packages.debian.org
Usertags: unblock

Please unblock package libcgi-formbuilder-perl. This fixes #769240, a
regression introduced while fixing #766087 (use of dangerous/deprecated
API in CGI.pm, which causes warnings): some users of libcgi-formbuilder-perl
turn out to use it with an object that implements the deprecated part of the
CGI.pm interface, but not the replacement.

The source debdiff is hard to read because I combined three related
patches into one replacement patch, so the attached diff is between
the resulting patched trees for 3.09-1 and 3.09-2, excluding the patches
themselves. Please let me know if you'd prefer a different diff.

unblock libcgi-formbuilder-perl/3.09-2

Regards,
    S

-- System Information:
Debian Release: jessie/sid
  APT prefers proposed-updates
  APT policy: (500, 'proposed-updates'), (500, 'unstable'), (500, 'testing'), 
(500, 'stable'), (1, 'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 3.16.0-4-amd64 (SMP w/4 CPU cores)
Locale: LANG=en_GB.utf8, LC_CTYPE=en_GB.utf8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
diff -ru '--exclude=.pc' '--exclude=*.patch' libcgi-formbuilder-perl-3.09-1/debian/changelog libcgi-formbuilder-perl-3.09-2/debian/changelog
--- libcgi-formbuilder-perl-3.09-1/debian/changelog	2014-10-25 01:04:40.000000000 +0100
+++ libcgi-formbuilder-perl-3.09-2/debian/changelog	2014-11-15 14:58:41.000000000 +0000
@@ -1,3 +1,12 @@
+libcgi-formbuilder-perl (3.09-2) unstable; urgency=medium
+
+  [ Simon McVittie ]
+  * Merge patches 0005-0006 into 0004, and adapt to retain support for
+    objects that mimic the CGI.pm API but do not have param_fetch.
+    Closes: bug#769240. Thanks to Simon McVittie.
+
+ -- Jonas Smedegaard <d...@jones.dk>  Sat, 15 Nov 2014 15:58:40 +0100
+
 libcgi-formbuilder-perl (3.09-1) unstable; urgency=medium
 
   [ Salvatore Bonaccorso ]
diff -ru '--exclude=.pc' '--exclude=*.patch' libcgi-formbuilder-perl-3.09-1/debian/patches/series libcgi-formbuilder-perl-3.09-2/debian/patches/series
--- libcgi-formbuilder-perl-3.09-1/debian/patches/series	2014-10-25 00:58:09.000000000 +0100
+++ libcgi-formbuilder-perl-3.09-2/debian/patches/series	2014-11-15 14:50:04.000000000 +0000
@@ -1,6 +1,4 @@
 pod-encoding.patch
 pod-spelling.patch
 0004-Avoid-unneeded-warning-from-CGI.pm-4.05-or-newer.patch
-0005-Avoid-unneeded-warning-from-CGI.pm-4.05-or-newer.patch
-0006-Fix-another-use-of-param-that-will-cause-a-warning-i.patch
 0007-Comment-that-cgi_param-is-context-sensitive-just-lik.patch
diff -ru '--exclude=.pc' '--exclude=*.patch' libcgi-formbuilder-perl-3.09-1/lib/CGI/FormBuilder/Field.pm libcgi-formbuilder-perl-3.09-2/lib/CGI/FormBuilder/Field.pm
--- libcgi-formbuilder-perl-3.09-1/lib/CGI/FormBuilder/Field.pm	2014-11-15 16:41:38.000000000 +0000
+++ libcgi-formbuilder-perl-3.09-2/lib/CGI/FormBuilder/Field.pm	2014-11-15 16:41:48.000000000 +0000
@@ -189,7 +189,19 @@
     my $self = shift;
     debug 2, "$self->{name}: called \$field->cgi_value";
     puke "Cannot set \$field->cgi_value manually" if @_;
-    if (my @v = @{$self->{_form}{params}->param_fetch($self->name)}) {
+
+    my @v;
+    if ($self->{_form}{params}->can('param_fetch')) {
+        @v = @{$self->{_form}{params}->param_fetch($self->name)};
+    }
+    else {
+        # array-context calls to param($p) are deprecated in
+        # CGI.pm, but some other objects that mimic
+        # its interface don't have param_fetch
+        @v = $self->{_form}{params}->param($self->name);
+    }
+
+    if (@v) {
         for my $v (@v) {
             if ($self->other && $v eq $self->othername) {
                 debug 1, "$self->{name}: redoing value from _other field";
diff -ru '--exclude=.pc' '--exclude=*.patch' libcgi-formbuilder-perl-3.09-1/lib/CGI/FormBuilder/Multi.pm libcgi-formbuilder-perl-3.09-2/lib/CGI/FormBuilder/Multi.pm
--- libcgi-formbuilder-perl-3.09-1/lib/CGI/FormBuilder/Multi.pm	2014-11-15 16:41:38.000000000 +0000
+++ libcgi-formbuilder-perl-3.09-2/lib/CGI/FormBuilder/Multi.pm	2014-11-15 16:41:48.000000000 +0000
@@ -218,7 +218,19 @@
         }
         for my $k (@{$self->{keepextras}}) {
             next if $k eq $pnam;
-            for my $v (@{$self->{params}->param_fetch($k)}) {
+
+            my @values;
+            if ($self->{params}->can('param_fetch')) {
+                @values = @{$self->{params}->param_fetch($k)};
+            }
+            else {
+                # array-context calls to param($k) are deprecated in
+                # CGI.pm, but some other objects that mimic
+                # its interface don't have param_fetch
+                @values = $self->{params}->param($k);
+            }
+
+            for my $v (@values) {
                 push @keep, { name => $k, value => $v };
             }
         }
diff -ru '--exclude=.pc' '--exclude=*.patch' libcgi-formbuilder-perl-3.09-1/lib/CGI/FormBuilder.pm libcgi-formbuilder-perl-3.09-2/lib/CGI/FormBuilder.pm
--- libcgi-formbuilder-perl-3.09-1/lib/CGI/FormBuilder.pm	2014-11-15 16:41:38.000000000 +0000
+++ libcgi-formbuilder-perl-3.09-2/lib/CGI/FormBuilder.pm	2014-11-15 16:41:48.000000000 +0000
@@ -855,7 +855,18 @@
 
     # Make sure to get all values
     for my $p (@keep) {
-        for my $v (@{$self->{params}->param_fetch($p)}) {
+        my @values;
+        if ($self->{params}->can('param_fetch')) {
+            @values = @{$self->{params}->param_fetch($p)};
+        }
+        else {
+            # array-context calls to param($p) are deprecated in
+            # CGI.pm, but some other objects that mimic
+            # its interface don't have param_fetch
+            @values = $self->{params}->param($p);
+        }
+
+        for my $v (@values) {
             debug 1, "keepextras: saving hidden param $p = $v";
             push @html, htmltag('input', name => $p, type => 'hidden', value => $v);
         }

Reply via email to