make $c->flash not delete unless $c->flash was actually touched, "to allow multiple...
Yuval Kogman [Thu, 29 Dec 2005 19:41:33 +0000 (19:41 +0000)]
lib/Catalyst/Plugin/Session.pm

index f306997..080420b 100644 (file)
@@ -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");
+            }
         }
     }
 }