--- nodeaccess_userreference.module	2009-03-04 11:33:12.000000000 +0100
+++ nodeaccess_userreference-new.module	2009-03-25 10:55:39.000000000 +0100
@@ -90,29 +90,31 @@ function nodeaccess_userreference_node_a
   if (is_array($info)) {
     foreach ($info as $field) {
       if ($field['type'] == 'userreference') {
-        $var_name = "nodeaccess_userreference_" . $field['field_name'] . '_' . $field['type_name'];
+        $view_name = "nodeaccess_userreference_" . $field['field_name'] . '_' . $field['type_name'];
         $update_name = "nodeaccess_userreference_" . $field['field_name'] . '_' . $field['type_name'] . '_update';
         $delete_name = "nodeaccess_userreference_" . $field['field_name'] . '_' . $field['type_name'] . '_delete';
-        $grant_view = variable_get($var_name, 0);
+        $grant_view = variable_get($view_name, 0);
         $grant_update = variable_get($update_name, 0);
         $grant_delete = variable_get($delete_name, 0);
         if (($grant_view || $grant_update || $grant_delete) && is_array($node->$field['field_name'])) {
           foreach ($node->$field['field_name'] as $userreference) {
-            $grant = array(
-              'realm' => 'nodeaccess_userreference',
-              'gid' => $userreference['uid'],
-              'priority' => 0,
-            );
+            $uid = &$userreference['uid'];
+            if (!isset($grants[$uid])) {
+              $grants[$uid] = array(
+                'realm' => 'nodeaccess_userreference',
+                'gid' => $uid,
+                'priority' => 0,
+              );
+            }
             if ($grant_view) {
-              $grant['grant_view'] = 1;
+              $grants[$uid]['grant_view'] = 1;
             }
             if ($grant_update) {
-              $grant['grant_update'] = 1;
+              $grants[$uid]['grant_update'] = 1;
             }
             if ($grant_delete) {
-              $grant['grant_delete'] = 1;
+              $grants[$uid]['grant_delete'] = 1;
             }
-            $grants[] = $grant;
           }
         }
       }
@@ -121,5 +123,5 @@ function nodeaccess_userreference_node_a
   if (!empty($grants)) {
     return $grants;
   }
-  return null;
+  return NULL;
 }
