[ic] BUG: Vend::Order::route_order() breaks tie between $::Values and $Vend::Session->{values}

Peter peter at pajamian.dhs.org
Mon Nov 4 10:00:07 UTC 2013


route_order() has code that saves a copy of the values hashref:
my $value_save = { %{$::Values} };

...and then later attempts to restore it:
$Vend::Interpolate::Values = $::Values = $value_save;

The issue is that the copy overwrites the original $::Values when it's
restored and (if my understanding is correct) ends up breaking the tie
between $::Values and $Vend::Session->{values}.  This has an effect on
route commit and rollback code that attempts to modify the Values space,
if $Values is modified in the perl code set in "Route foo commit" or
"Route foo rollback" then that modification does not get saved with the
session.

My workaround for this issue at present is to modify both $Values and
$Session->{values} from inside the perl block, but I think this should
be considered a bug and fixed properly.  I'm not entirely sure what a
proper fix would involve, though, and I'm reluctant to touch that code
with fear of breaking order routes in Interchange.


Peter



More information about the interchange-users mailing list