From 016c26d901f50fd9374e992c753eb9cc9b4f485d Mon Sep 17 00:00:00 2001 From: Don Armstrong Date: Thu, 9 Aug 2007 21:38:55 -0700 Subject: [PATCH] * Make soap handle arrayrefs properly for Debbugs::SOAP --- Debbugs/SOAP.pm | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/Debbugs/SOAP.pm b/Debbugs/SOAP.pm index e7f159c..ed7b274 100644 --- a/Debbugs/SOAP.pm +++ b/Debbugs/SOAP.pm @@ -43,6 +43,7 @@ use IO::File; use Debbugs::Status qw(get_bug_status); use Debbugs::Common qw(make_list getbuglocation getbugcomponent); use Storable qw(nstore retrieve); +use Scalar::Util qw(looks_like_number); our $CURRENT_VERSION = 1; @@ -98,6 +99,12 @@ L besides the bug number; in the second the bug, dist, arch, bugusertags, sourceversions, and version parameters are passed if they are present. +As a special case for suboptimal SOAP implementations, if only one +argument is passed to get_status and it is an arrayref which either +has a number as the first element or also contains an arrayref as the +first element, the outer arrayref is dereferenced, and processed as +in the examples above. + See L for details. =cut @@ -106,6 +113,15 @@ sub get_status { my $VERSION = __populate_version(pop); my ($self,@bugs) = @_; + if (@bugs == 1 and + ref($bugs[0]) and + @{$bugs[0]} and + (ref($bugs[0][0]) or + looks_like_number($bugs[0][0]) + ) + ) { + @bugs = @{$bugs[0]}; + } my %status; for my $bug (@bugs) { my $bug_status; -- 2.39.2