From: Yuval Kogman Date: Thu, 29 Dec 2005 19:41:33 +0000 (+0000) Subject: make $c->flash not delete unless $c->flash was actually touched, "to allow multiple... X-Git-Tag: v0.05~2 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=23fbca00c11e358ef8e25aab6931e60934a9442c;p=catagits%2FCatalyst-Plugin-Session.git make $c->flash not delete unless $c->flash was actually touched, "to allow multiple redirects" ;-) --- diff --git a/lib/Catalyst/Plugin/Session.pm b/lib/Catalyst/Plugin/Session.pm index f306997..080420b 100644 --- a/lib/Catalyst/Plugin/Session.pm +++ b/lib/Catalyst/Plugin/Session.pm @@ -120,15 +120,15 @@ sub _save_flash { my $c = shift; if ( my $sid = $c->_sessionid ) { - my $flash_data = $c->_flash || {}; + if ( my $flash_data = $c->_flash ) { + delete @{$flash_data}{ @{ $c->_flash_stale_keys || [] } }; - delete @{$flash_data}{ @{ $c->_flash_stale_keys || [] } }; - - if (%$flash_data) { # damn 'my' declarations - $c->store_session_data( "flash:$sid", $flash_data ); - } - else { - $c->delete_session_data("flash:$sid"); + if (%$flash_data) { + $c->store_session_data( "flash:$sid", $flash_data ); + } + else { + $c->delete_session_data("flash:$sid"); + } } } }