diff --git a/includes/theme.inc b/includes/theme.inc
index 5ae0fea2042b3fe4aac86906feb65b8a087aa926..ee73965d963ef6baa8619afe7cacdaddf325af5f 100644
--- a/includes/theme.inc
+++ b/includes/theme.inc
@@ -1987,25 +1987,24 @@ function theme_table($variables) {
     $flip = array('even' => 'odd', 'odd' => 'even');
     $class = 'even';
     foreach ($rows as $number => $row) {
-      $attributes = array();
-
       // Check if we're dealing with a simple or complex row
       if (isset($row['data'])) {
-        foreach ($row as $key => $value) {
-          if ($key == 'data') {
-            $cells = $value;
-          }
-          else {
-            $attributes[$key] = $value;
-          }
-        }
+        $cells = $row['data'];
+        $no_striping = isset($row['no_striping']) ? $row['no_striping'] : FALSE;
+
+        // Set the attributes array and exclude 'data' and 'no_striping'.
+        $attributes = $row;
+        unset($attributes['data']);
+        unset($attributes['no_striping']);
       }
       else {
         $cells = $row;
+        $attributes = array();
+        $no_striping = FALSE;
       }
       if (count($cells)) {
         // Add odd/even class
-        if (empty($row['no_striping'])) {
+        if (!$no_striping) {
           $class = $flip[$class];
           $attributes['class'][] = $class;
         }
diff --git a/modules/simpletest/tests/theme.test b/modules/simpletest/tests/theme.test
index d377ef0638133aefc1fbed2f133fd561f0fc825b..519a7a90abac2b20c9598bda3dbd69edcc54fb3c 100644
--- a/modules/simpletest/tests/theme.test
+++ b/modules/simpletest/tests/theme.test
@@ -215,6 +215,20 @@ class ThemeTableTestCase extends DrupalWebTestCase {
     $this->assertRaw('<thead><tr><th>Header 1</th>', 'Table header was printed.');
   }
 
+  /**
+   * Tests that the 'no_striping' option works correctly.
+   */
+  function testThemeTableWithNoStriping() {
+    $rows = array(
+      array(
+        'data' => array(1),
+        'no_striping' => TRUE,
+      ),
+    );
+    $this->content = theme('table', array('rows' => $rows));
+    $this->assertNoRaw('class="odd"', 'Odd/even classes were not added because $no_striping = TRUE.');
+    $this->assertNoRaw('no_striping', 'No invalid no_striping HTML attribute was printed.');
+  }
 }
 
 /**