--- list.module	2011-12-08 13:51:25.000000000 +0000
+++ list.module_new	2011-12-08 13:51:17.000000000 +0000
@@ -226,13 +226,13 @@ function list_field_update_field($field,
  *   The array of allowed values. Keys of the array are the raw stored values
  *   (number or text), values of the array are the display labels.
  */
-function list_allowed_values($field) {
+function list_allowed_values($field, $flatten = FALSE) {
   $allowed_values = &drupal_static(__FUNCTION__, array());
 
   if (!isset($allowed_values[$field['id']])) {
     $function = $field['settings']['allowed_values_function'];
     if (!empty($function) && function_exists($function)) {
-      $values = $function($field);
+      $values = $function($field, $flatten);
     }
     else {
       $values = $field['settings']['allowed_values'];
@@ -373,7 +373,7 @@ function _list_values_in_use($field, $va
  * - 'list_illegal_value': The value is not part of the list of allowed values.
  */
 function list_field_validate($entity_type, $entity, $field, $instance, $langcode, $items, &$errors) {
-  $allowed_values = list_allowed_values($field);
+  $allowed_values = list_allowed_values($field, TRUE);
   foreach ($items as $delta => $item) {
     if (!empty($item['value'])) {
       if (!empty($allowed_values) && !isset($allowed_values[$item['value']])) {
