From b19659e3043e5999b178add460020592e9c5c00c Mon Sep 17 00:00:00 2001 From: Galen Charlton Date: Wed, 9 Mar 2016 01:41:33 +0000 Subject: [PATCH] Bug 16009: fix GetMember() search on NULL/undef values This patch fixes a bug whereby GetMember(searchfield => undef) (i.e., searching for patron records where 'searchfield' is NULL) would crash. This fixes a regression introduced by bug 15344 that in turn exposed a long-standing bug in GetMember(). To test: [1] Import some offline circulation transactions that include at least one return. [2] Attempt to view the list of pending transactions; a crash will occur. [3] Apply the patch and view the list of pending transactions again; this time, it should work. Signed-off-by: Galen Charlton Signed-off-by: Srdjan Signed-off-by: Jonathan Druart --- C4/Members.pm | 2 +- t/db_dependent/Members.t | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/C4/Members.pm b/C4/Members.pm index 405b6fee45..a1966b6d49 100644 --- a/C4/Members.pm +++ b/C4/Members.pm @@ -449,7 +449,7 @@ sub GetMember { } $debug && warn $select, " ",values %information; my $sth = $dbh->prepare("$select"); - $sth->execute(map{$information{$_}} keys %information); + $sth->execute(@values); my $data = $sth->fetchall_arrayref({}); #FIXME interface to this routine now allows generation of a result set #so whole array should be returned but bowhere in the current code expects this diff --git a/t/db_dependent/Members.t b/t/db_dependent/Members.t index 4c87e84cb9..4369371ea0 100755 --- a/t/db_dependent/Members.t +++ b/t/db_dependent/Members.t @@ -17,7 +17,7 @@ use Modern::Perl; -use Test::More tests => 74; +use Test::More tests => 76; use Test::MockModule; use Data::Dumper; use C4::Context; @@ -441,4 +441,12 @@ sub testAgeAccessors { $member->{dateofbirth} = $original_dateofbirth; #It is polite to revert made changes in the unit tests. } #sub testAgeAccessors +# regression test for bug 16009 +my $patron; +eval { + my $patron = GetMember(cardnumber => undef); +}; +is($@, '', 'Bug 16009: GetMember(cardnumber => undef) works'); +is($patron, undef, 'Bug 16009: GetMember(cardnumber => undef) returns undef'); + 1; -- 2.39.5