Index: modules/block/block.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/block/block.module,v
retrieving revision 1.299.2.4
diff -u -r1.299.2.4 block.module
--- modules/block/block.module	6 Oct 2009 12:13:01 -0000	1.299.2.4
+++ modules/block/block.module	14 Dec 2010 10:56:26 -0000
@@ -576,3 +576,10 @@
     return implode(':', $cid_parts);
   }
 }
+
+/**
+ * Implementation of hook role_delete
+ */
+function block_role_delete($rid) {
+  db_query('DELETE FROM {blocks_roles} WHERE rid = %d', $rid);
+}
Index: modules/user/user.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/user/user.admin.inc,v
retrieving revision 1.18.2.2
diff -u -r1.18.2.2 user.admin.inc
--- modules/user/user.admin.inc	1 Mar 2010 11:15:38 -0000	1.18.2.2
+++ modules/user/user.admin.inc	14 Dec 2010 10:56:27 -0000
@@ -700,6 +700,8 @@
   else if ($form_state['values']['op'] == t('Add role')) {
     db_query("INSERT INTO {role} (name) VALUES ('%s')", $form_state['values']['name']);
     drupal_set_message(t('The role has been added.'));
+    // Invoke hook role delete    
+    module_invoke_all('role_delete', $form_state['values']['rid']);        
   }
   $form_state['redirect'] = 'admin/user/roles';
   return;
