From 4f618fb33a80d7f757dc0c95832b6d6c7d71f819 Mon Sep 17 00:00:00 2001 From: Petro Vashchuk Date: Mon, 22 Feb 2021 13:46:44 +0200 Subject: [PATCH] Bug 27746: prevent regexp undefined warning when checking subfield contents ($oclc) Some of the books have subfield "a" of field "035" absent and it's possible to have such (it doesn't says "Require" in the interface), which causes "Use of uninitialized value $oclc in pattern match (m//)" error. Solved by screening regex with check for empty variables before the match. To reproduce: 1) Edit existing book or create a new one with empty marc subfield "a" of field "035" 2) Use the search feature that will find it along with some other books. 3) Check /var/log/koha/kohadev/plack-intranet-error.log to find "Use of uninitialized value $oclc in pattern match (m//)" error. 4) Apply the patch. 5) Repeat the search and check the logs again to ensure that error didn't appear again. Signed-off-by: David Nind Signed-off-by: Jonathan Druart Signed-off-by: Jonathan Druart (cherry picked from commit a34e1f9f0d32e4cf0f282016e52166d309b25ef7) Signed-off-by: Fridolin Somers --- C4/Koha.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/C4/Koha.pm b/C4/Koha.pm index aac05c76f9..c08ee6ad44 100644 --- a/C4/Koha.pm +++ b/C4/Koha.pm @@ -671,7 +671,7 @@ sub GetNormalizedOCLCNumber { my @fields = $marcrecord->field('035'); foreach my $field (@fields) { my $oclc = $field->subfield('a'); - if ($oclc =~ /OCoLC/) { + if ($oclc && $oclc =~ /OCoLC/) { $oclc =~ s/\(OCoLC\)//; return $oclc; } -- 2.39.5