=== modified file 'uc_attribute/uc_attribute.ca.inc'
--- uc_attribute/uc_attribute.ca.inc	2009-07-21 14:29:21 +0000
+++ uc_attribute/uc_attribute.ca.inc	2009-10-20 17:30:00 +0000
@@ -33,6 +33,10 @@
 function uc_attribute_condition_ordered_product_option($order, $settings) {
   $result = FALSE;
 
+  if ($option = uc_attribute_option_load($settings['attribute_option'])) {
+    $attribute = uc_attribute_load($option->aid);
+  }
+
   $match = unserialize($settings['attribute_option']);
 
   foreach ($order->products as $product) {
@@ -45,21 +49,14 @@
     // Once the order is made, the attribute data is changed to just the names.
     // If we can't find it by ID, check the names.
     if (is_int(key($attributes))) {
-      if (in_array($settings['attribute_option'], $attributes)) {
+      if (in_array($settings['attribute_option'], $attributes[$attribute->aid])) {
         $result = TRUE;
         break;
       }
     }
     else {
-      // Load the attribute data once, only if we need it.
-      if (!isset($option)) {
-        if ($option = uc_attribute_option_load($settings['attribute_option'])) {
-          $attribute = uc_attribute_load($option->aid);
-        }
-      }
-
       if ($attribute) {
-        if (isset($attributes[$attribute->name]) && $attributes[$attribute->name] == $option->name) {
+        if (isset($attributes[$attribute->name]) && in_array($option->name, $attributes[$attribute->name])) {
           $result = TRUE;
           break;
         }

