From ee90cff97005759a1295d23bbbf018f1b5040c6d Mon Sep 17 00:00:00 2001 From: emlam Date: Thu, 27 Jul 2023 16:36:34 +0000 Subject: [PATCH] Bug 34435: Remove side effect from get_password_expiry_date If get_password_expiry_date is passed a DateTime object as a parameter, it modifies and returns the original object. This can create possible side effects. This patch modifies get_password_expiry_date to clone the DateTime object that it receives as a parameter and return the modified clone, so that object references can be passed in safely. To test: prove t/db_dependent/Koha/Patron/Category.t Signed-off-by: Sam Lau Signed-off-by: Jonathan Druart --- Koha/Patron/Category.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Koha/Patron/Category.pm b/Koha/Patron/Category.pm index 335367b825d..e24c8d6e79c 100644 --- a/Koha/Patron/Category.pm +++ b/Koha/Patron/Category.pm @@ -126,7 +126,7 @@ sub get_password_expiry_date { my ($self, $date ) = @_; if ( $self->password_expiry_days ) { $date ||= dt_from_string; - $date = dt_from_string( $date ) unless ref $date; + $date = ref $date ? $date->clone() : dt_from_string( $date ); return $date->add( days => $self->password_expiry_days )->ymd; } else { return; -- 2.25.1