This is a regression somewhere between bug 14576 and current master 21.12. Probably originating from trying to resolve a warn on the NULL value.
if ( defined $item->location && $item->location ne $update_loc_rules->{_ALL_}) { $messages->{'ItemLocationUpdated'} = { from => $item->location, to => $update_loc_rules->{_ALL_} }; $item->location($update_loc_rules->{_ALL_})->store({skip_record_index=>1});
Hmm. It seems that a correction has been made very recently: if ( ( defined $item->location && $item->location ne $update_loc_rules->{_ALL_}) || (!defined $item->location && $update_loc_rules->{_ALL_} ne "")
Bug 28472 was not that recent after all ;) *** This bug has been marked as a duplicate of bug 28472 ***