From e0f35c01c1e2508070ab59877a779018e369f76d Mon Sep 17 00:00:00 2001 From: Marcel de Rooy Date: Thu, 5 Jul 2018 09:53:57 +0200 Subject: [PATCH] Bug 21036: Fix warnings from C4/Biblio Content-Type: text/plain; charset=utf-8 Use of uninitialized value $isbn in string ne at /usr/share/koha/prodclone/C4/Biblio.pm line 1794. (16.11 line number) Trivial edit. And these warnings from TransformHtmlToXml (with 16.11 line numbers): Use of uninitialized value in substr at /usr/share/koha/prodclone/C4/Biblio.pm line 2527. Use of uninitialized value in substr at /usr/share/koha/prodclone/C4/Biblio.pm line 2528. substr outside of string at /usr/share/koha/prodclone/C4/Biblio.pm line 2528. Indicator in 952 is empty at /usr/share/koha/prodclone/C4/Biblio.pm line 2534. The last warning is not needed and can be removed. Note that the code used the construct @$indicator[$j] for $$indicator[$j]. The first is an array slice. This worked in list context. But apparently the second was meant to be used. And can be rewritten as $indicator->[$j] which generally is considered more readable. The code around indicator1/2 and ind1/2 is simplified. This change is applied twice in the same sub. Test plan: Read the changes. Run t/Biblio/TransformHtmlToXml.t --- C4/Biblio.pm | 28 +++++++--------------------- 1 file changed, 7 insertions(+), 21 deletions(-) diff --git a/C4/Biblio.pm b/C4/Biblio.pm index 0c5a917..8117dcb 100644 --- a/C4/Biblio.pm +++ b/C4/Biblio.pm @@ -1627,7 +1627,7 @@ sub GetMarcISBN { my @marcisbns; foreach my $field ( $record->field($scope) ) { my $isbn = $field->subfield( 'a' ); - if ( $isbn ne "" ) { + if ( $isbn && $isbn ne "" ) { push @marcisbns, $isbn; } } @@ -2324,16 +2324,9 @@ sub TransformHtmlToXml { if ( ( @$tags[$i] ne $prevtag ) ) { $close_last_tag = 0; $j++ unless ( @$tags[$i] eq "" ); - my $indicator1 = eval { substr( @$indicator[$j], 0, 1 ) }; - my $indicator2 = eval { substr( @$indicator[$j], 1, 1 ) }; - my $ind1 = _default_ind_to_space($indicator1); - my $ind2; - if ( @$indicator[$j] ) { - $ind2 = _default_ind_to_space($indicator2); - } else { - warn "Indicator in @$tags[$i] is empty"; - $ind2 = " "; - } + my $str = ( $indicator->[$j] // q{} ) . ' '; # extra space prevents substr outside of string warn + my $ind1 = _default_ind_to_space( substr( $str, 0, 1 ) ); + my $ind2 = _default_ind_to_space( substr( $str, 1, 1 ) ); if ( !$first ) { $xml .= "\n"; if ( ( @$tags[$i] && @$tags[$i] > 10 ) @@ -2366,19 +2359,12 @@ sub TransformHtmlToXml { } } } else { # @$tags[$i] eq $prevtag - my $indicator1 = eval { substr( @$indicator[$j], 0, 1 ) }; - my $indicator2 = eval { substr( @$indicator[$j], 1, 1 ) }; - my $ind1 = _default_ind_to_space($indicator1); - my $ind2; - if ( @$indicator[$j] ) { - $ind2 = _default_ind_to_space($indicator2); - } else { - warn "Indicator in @$tags[$i] is empty"; - $ind2 = " "; - } if ( @$values[$i] eq "" ) { } else { if ($first) { + my $str = ( $indicator->[$j] // q{} ) . ' '; # extra space prevents substr outside of string warn + my $ind1 = _default_ind_to_space( substr( $str, 0, 1 ) ); + my $ind2 = _default_ind_to_space( substr( $str, 1, 1 ) ); $xml .= "\n"; $first = 0; $close_last_tag = 1; -- 2.1.4