From 786eaee797309733474030b8ab9a939c04ae586f Mon Sep 17 00:00:00 2001 From: David Gustafsson Date: Mon, 23 Oct 2023 17:49:06 +0200 Subject: [PATCH] Bug 35133: Don't lazily define accessor methods when invoked through SUPER To test: 1) Apply Bug 32476 2) Run tests in t/db_dependent/Patrons.t 3) This should produce multiple "Subroutine Koha::Patron::SUPER::dateexpiry redefined at ..." warnings 4) Apply patch 5) Run tests in t/db_dependent/Patrons.t again 6) The warnings in 3) should now no longer appear --- Koha/Object.pm | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/Koha/Object.pm b/Koha/Object.pm index 97ae3494fd2..cd4a1113f70 100644 --- a/Koha/Object.pm +++ b/Koha/Object.pm @@ -918,8 +918,13 @@ sub AUTOLOAD { return $self->_result()->get_column($method); } }; - no strict 'refs'; ## no critic (strict) - *{$AUTOLOAD} = $accessor; + # If called from child class as $self->SUPER-> + # $AUTOLOAD will contain ::SUPER which breaks method lookup + # therefore we cannot write those entries into the symbol table + unless ( $AUTOLOAD =~ /::SUPER::/ ) { + no strict 'refs'; ## no critic (strict) + *{$AUTOLOAD} = $accessor; + } return $accessor->( $self, @_ ); } -- 2.42.0