From b5759848936bc53632182e3a40141aa8b9f44fa1 Mon Sep 17 00:00:00 2001
From: Petro Vashchuk <stalkernoid@gmail.com>
Date: Mon, 18 May 2020 14:45:56 +0300
Subject: [PATCH] Bug 25516: Fix for "Can't call method unblessed on unblessed
 reference"
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Software error:
    Can't call method "unblessed" on unblessed reference at ../reserve/request.pl line 581.
was caused by recent commit with `wantarray` removal in sub pickup_locations in ‘Item.pm’
and visible on fresher Perls (where experimental feature "autoderef" removed https://www.effectiveperlprogramming.com/2010/11/use-array-references-with-the-array-operators/ )

To test:
    1) Get a clean dev environment after "reset_all"
    2) Add an empty record for “Default checkout, hold and return policy” on /cgi-bin/koha/admin/smart-rules.pl.
    3) Open item record, like /cgi-bin/koha/reserve/request.pl?biblionumber=1&borrowernumber=1
    4) Observe the error (Can't call method "unblessed" on unblessed reference at ../reserve/request.pl line 581.)
    5) Apply patch.
    6) Repeat steps 2 and 3.
    7) Observe that the error is gone.
---
 reserve/request.pl | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

diff --git a/reserve/request.pl b/reserve/request.pl
index 61f853d085..7df14b8172 100755
--- a/reserve/request.pl
+++ b/reserve/request.pl
@@ -577,14 +577,13 @@ foreach my $biblionumber (@biblionumbers) {
                         $item->{pickup_locations} = 'Any library';
                         $item->{pickup_locations_code} = 'all';
                     } else {
+                	    my $arr_locations = Koha::Items->find($itemnumber)
+					        ->pickup_locations( { patron => $patron } );
+
                         $item->{pickup_locations} = join( ', ',
-                            map { $_->unblessed->{branchname} }
-                              Koha::Items->find($itemnumber)
-                              ->pickup_locations( { patron => $patron } ) );
+                            map { $_->unblessed->{branchname} } @$arr_locations);
                         $item->{pickup_locations_code} = join( ',',
-                            map { $_->unblessed->{branchcode} }
-                              Koha::Items->find($itemnumber)
-                              ->pickup_locations( { patron => $patron } ) );
+                            map { $_->unblessed->{branchcode} } @$arr_locations);
                     }
 
                     push( @available_itemtypes, $item->{itype} );
-- 
2.17.1