Index: pm_block_user/pm_block_user.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/privatemsg/pm_block_user/pm_block_user.module,v
retrieving revision 1.1.2.8
diff -u -r1.1.2.8 pm_block_user.module
--- pm_block_user/pm_block_user.module	22 Jul 2009 15:14:09 -0000	1.1.2.8
+++ pm_block_user/pm_block_user.module	1 Oct 2009 06:24:27 -0000
@@ -523,7 +523,7 @@
       );
     }
   }
-  unset($recipient);
+
   $args = array_merge(array($author->uid), array_keys($recipients));
   $result = db_query('SELECT recipient FROM {pm_block_user} WHERE author = %d AND recipient IN ('. db_placeholders($recipients) .') GROUP BY recipient', $args);
   while ($row = db_fetch_array($result)) {
Index: privatemsg.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/privatemsg/privatemsg.module,v
retrieving revision 1.70.2.30.2.91.2.68
diff -u -r1.70.2.30.2.91.2.68 privatemsg.module
--- privatemsg.module	14 Sep 2009 15:53:20 -0000	1.70.2.30.2.91.2.68
+++ privatemsg.module	1 Oct 2009 06:23:27 -0000
@@ -673,13 +673,14 @@
   $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++;
@@ -689,20 +690,26 @@
       $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'];
   }
@@ -805,11 +812,11 @@
       // If there are no valid recipients, unset the message reply form.
       $form['privatemsg']['#access'] = FALSE;
     }
-    $form['privatemsg']['read_all'] = array(
-      '#type'  => 'value',
-      '#value' => $read_all,
-    );
   }
+  $form['privatemsg']['read_all'] = array(
+    '#type'  => 'value',
+    '#value' => $read_all,
+  );
   return $form;
 }
 
@@ -838,7 +845,7 @@
     // 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]);
     }
   }

