--- poe\POE\Kernel.pm	Thu Dec 12 21:28:18 2002
+++ poe.cgg\POE\Kernel.pm	Mon Dec 16 15:12:44 2002
@@ -2440,8 +2433,9 @@
   $self->_data_sig_clear_handled_flags();
 
   # Dispatch the event, at long last.
-  my $return =
-    $session->_invoke_state($source_session, $event, $etc, $file, $line);
+  my $return = wantarray
+    ? [ $session->_invoke_state($source_session, $event, $etc, $file, $line) ]
+    : $session->_invoke_state($source_session, $event, $etc, $file, $line);
 
   # Stringify the handler's return value if it belongs in the POE
   # namespace.  $return's scope exists beyond the post-dispatch
@@ -2515,7 +2510,7 @@
   $kr_active_event = $hold_active_event;
 
   # Return what the handler did.  This is used for call().
-  $return;
+  wantarray ? @$return : $return;
 }
 
 #------------------------------------------------------------------------------
@@ -2985,14 +2980,19 @@
   # deterministic programs, but the difficulty can be ameliorated if
   # programmers set some base rules and stick to them.
 
-  my $return_value =
-    $self->_dispatch_event
+  my $return_value = wantarray
+    ? [$self->_dispatch_event
+      ( $session, $kr_active_session,
+        $event_name, ET_CALL, \@etc,
+        (caller)[1,2], time(), -__LINE__
+      )]
+    : $self->_dispatch_event
       ( $session, $kr_active_session,
         $event_name, ET_CALL, \@etc,
         (caller)[1,2], time(), -__LINE__
       );
   $! = 0;
-  return $return_value;
+  wantarray ? @$return_value : $return_value;
 }
 
 #------------------------------------------------------------------------------
