Bug 33745: (QA follow-up) Remove goto

Test plan:
Prove t/db_dependent/Koha
Run the benchmark (on BZ) again

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
This commit is contained in:
Marcel de Rooy 2023-07-14 09:28:54 +00:00 committed by Tomas Cohen Arazi
parent 837d0a955e
commit abc14dbaf2
Signed by: tomascohen
GPG key ID: 0A272EA1B2F3C15F

View file

@ -900,16 +900,15 @@ The autoload method is used only to get and set values for an objects properties
=cut
sub AUTOLOAD {
my ($self) = @_;
my $self = shift;
my $method = our $AUTOLOAD;
$method =~ s/.*://;
my @columns = @{$self->_columns()};
# Using direct setter/getter like $item->barcode() or $item->barcode($barcode);
if ( grep { $_ eq $method } @columns ) {
no strict 'refs';
*{$AUTOLOAD} = sub {
# Lazy definition of get/set accessors like $item->barcode; note that it contains $method
my $accessor = sub {
my $self = shift;
if ( @_ ) {
$self->_result()->set_column( $method, @_);
@ -918,7 +917,9 @@ sub AUTOLOAD {
return $self->_result()->get_column( $method );
}
};
goto &{$AUTOLOAD};
no strict 'refs';
*{$AUTOLOAD} = $accessor;
return $accessor->($self, @_);
}
my @known_methods = qw( is_changed id in_storage get_column discard_changes make_column_dirty );
@ -928,8 +929,6 @@ sub AUTOLOAD {
show_trace => 1
) unless grep { $_ eq $method } @known_methods;
# Remove $self so that @_ now contain arguments only
shift;
my $r = eval { $self->_result->$method(@_) };
if ( $@ ) {
Koha::Exceptions::Object->throw( ref($self) . "::$method generated this error: " . $@ );