vserver 1.9.5.x5
[linux-2.6.git] / drivers / acpi / utilities / uteval.c
index 0aa1fde..ead27d2 100644 (file)
@@ -5,7 +5,7 @@
  *****************************************************************************/
 
 /*
- * Copyright (C) 2000 - 2004, R. Byron Moore
+ * Copyright (C) 2000 - 2005, R. Byron Moore
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -198,6 +198,17 @@ acpi_ut_evaluate_object (
                break;
        }
 
+       if ((acpi_gbl_enable_interpreter_slack) &&
+               (!expected_return_btypes)) {
+               /*
+                * We received a return object, but one was not expected.  This can
+                * happen frequently if the "implicit return" feature is enabled.
+                * Just delete the return object and return AE_OK.
+                */
+               acpi_ut_remove_reference (info.return_object);
+               return_ACPI_STATUS (AE_OK);
+       }
+
        /* Is the return object one of the expected types? */
 
        if (!(expected_return_btypes & return_btype)) {
@@ -205,8 +216,9 @@ acpi_ut_evaluate_object (
                        prefix_node, path, AE_TYPE);
 
                ACPI_DEBUG_PRINT ((ACPI_DB_ERROR,
-                       "Type returned from %s was incorrect: %X\n",
-                       path, ACPI_GET_OBJECT_TYPE (info.return_object)));
+                       "Type returned from %s was incorrect: %s, expected Btypes: %X\n",
+                       path, acpi_ut_get_object_type_name (info.return_object),
+                       expected_return_btypes));
 
                /* On error exit, we must delete the return object */