On every save references are duplicated if you use node revisions.
Code below is a better one for this case:

function _multireference_load_values($nid = 0, $fieldname = '', $vid = NULL) {
  $values = array();
  if ($nid && $fieldname) {
    if (is_null($vid)) {
      $node = node_load($nid);
      $vid = $node->vid;
    }
    $sql    = "SELECT r_id, r_text, description, description2, weight FROM {node_field_multireference_data} WHERE nid=%d AND field_name='%s' AND vid=%d ORDER BY weight";
    $result = db_query($sql, $nid, $fieldname, $vid);
    $values = array();
    while ($data = db_fetch_object($result)) {
      $values[] = array(
        'r_id'   => $data->r_id,
        'r_text' => $data->r_text,
        'desc'   => $data->description,
        'desc2'  => $data->description2,
      );
    }
  }
  return $values;
}

Also in function multireference_field() find:

      $values = _multireference_load_values($node->nid, $field['field_name']);

and change to:

      $values = _multireference_load_values($node->nid, $field['field_name'], $node->vid);

Comments

steve.m’s picture

Assigned: Unassigned » steve.m
Status: Active » Needs review

Fixed in the -dev version. Please test!