Index: pm_block_user/pm_block_user.module
===================================================================
RCS file: /cvs/drupal/contributions/modules/privatemsg/pm_block_user/pm_block_user.module,v
retrieving revision 1.1.2.8.2.2
diff -u -p -r1.1.2.8.2.2 pm_block_user.module
--- pm_block_user/pm_block_user.module	15 Sep 2009 21:24:07 -0000	1.1.2.8.2.2
+++ pm_block_user/pm_block_user.module	4 Oct 2009 23:09:54 -0000
@@ -508,7 +508,7 @@ function pm_block_user_privatemsg_block_
       );
     }
   }
-  unset($recipient);
+
   $args = array(
     ':author' => $author->uid,
     ':recipients' => array_keys($recipients)
Index: privatemsg.module
===================================================================
RCS file: /cvs/drupal/contributions/modules/privatemsg/privatemsg.module,v
retrieving revision 1.70.2.30.2.91.2.64.2.6
diff -u -p -r1.70.2.30.2.91.2.64.2.6 privatemsg.module
--- privatemsg.module	17 Sep 2009 17:14:05 -0000	1.70.2.30.2.91.2.64.2.6
+++ privatemsg.module	4 Oct 2009 23:10:00 -0000
@@ -681,13 +681,14 @@ function privatemsg_new(&$form_state, $r
   $usercount = 0;
   $to = array();
   $to_themed = array();
+  $blocked = FALSE;
   foreach ($recipients as $recipient) {
     if (in_array($recipient->name, $to)) {
       // We already added the recipient to the list, skip him.
       continue;
     }
     // Check if another module is blocking the sending of messages to the recipient by current user.
-    $user_blocked = module_invoke_all('privatemsg_block_message', $user, array($recipient));
+    $user_blocked = module_invoke_all('privatemsg_block_message', $user, array($recipient->uid => $recipient));
     if (!count($user_blocked) <> 0 && $recipient->uid) {
       if ($recipient->uid == $user->uid) {
         $usercount++;
@@ -697,20 +698,26 @@ function privatemsg_new(&$form_state, $r
       $to[] = $recipient->name;
       $to_themed[$recipient->uid] = theme('username', $recipient);
     }
+    else {
+      // Recipient list contains blocked users.
+      $blocked = TRUE;
+    }
   }
 
-  if (empty($to) && $usercount >= 1) {
+  if (empty($to) && $usercount >= 1 && !$blocked) {
     // Assume the user sent message to own account as if the usercount is one or less, then the user sent a message but not to self.
     $to[] = $user->name;
     $to_themed[$user->uid] = theme('username', $user);
   }
 
-
   if (!empty($to)) {
     $recipients_string = implode(', ', $to);
   }
   if (isset($form_state['values'])) {
-    $recipients_string = $form_state['values']['recipient'];
+    if (isset($form_state['values']['recipient'])) {
+      $recipients_string = $form_state['values']['recipient'];
+      
+    }
     $subject   = $form_state['values']['subject'];
     $body      = $form_state['values']['body'];
   }
@@ -844,7 +851,7 @@ function pm_send_validate($form, &$form_
     // Load participants.
     $message['recipients'] = _privatemsg_load_thread_participants($form_state['values']['thread_id']);
     // Remove author.
-    if (isset($message['recipients'][$form_state['values']['author']->uid])) {
+    if (isset($message['recipients'][$form_state['values']['author']->uid]) && count($message['recipients']) > 1) {
       unset($message['recipients'][$form_state['values']['author']->uid]);
     }
   }
