fix crash introduced in previous patch
authorGalen Charlton <galen.charlton@liblime.com>
Wed, 15 Jul 2009 02:00:36 +0000 (22:00 -0400)
committerHenri-Damien LAURENT <henridamien.laurent@biblibre.com>
Wed, 16 Sep 2009 21:19:41 +0000 (23:19 +0200)
In the previous patch,

-    my @subf = $field->subfields;
-    (defined @subf) or @subf = ();

is not equivalent to

+    my @subf = $field->subfields || ();

as, the results of $field->subields is interpeted in scalar
context, not list context, resutling in @subf containing
the number of subfields, not the subfield data itself, which
engenders the error

Can't use string ("1") as an ARRAY ref while "strict refs" in use

later on.  Changing the operator to 'or' instead of '||'
fixes this.

Signed-off-by: Galen Charlton <galen.charlton@liblime.com>
cataloguing/additem.pl

index bc2bbfc..93f4b9b 100755 (executable)
@@ -198,7 +198,7 @@ my ($branchtagfield, $branchtagsubfield) = &GetMarcFromKohaField("items.homebran
 
 foreach my $field (@fields) {
     next if ($field->tag()<10);
-    my @subf = $field->subfields || ();
+    my @subf = $field->subfields or (); # don't use ||, as that forces $field->subfelds to be interpreted in scalar context
     my %this_row;
 # loop through each subfield
     for my $i (0..$#subf) {