diff -upr spam/spam.module spam/spam.module
--- spam/spam.module	2008-12-24 23:42:09.000000000 -0600
+++ spam/spam.module	2008-12-26 02:01:49.798300000 -0600
@@ -863,8 +863,10 @@ function spam_admin_settings_form() {
     '#options' => $period,
     '#description' => t('Older spam log entries will be automatically discarded. (Requires a correctly configured <a href="@cron">cron maintenance task</a>.)', array('@cron' => url('admin/reports/status')))
   );
-
-  return system_settings_form($form);
+  $form = system_settings_form($form);
+  // Unset the #submit function because we will use our own function.
+  unset($form['#submit']);
+  return $form;
 }
 
 /**
@@ -895,7 +897,8 @@ function spam_admin_settings_form_submit
       }
     }
   }
-  variable_set('filter_types', implode(',', $filter_types));
+  $filter_types = is_array($filter_types) ? implode(',', $filter_types) : $filter_types;
+  variable_set('filter_types', $filter_types);
 /* TODO The 'op' element in the form values is deprecated.
    Each button can have #validate and #submit functions associated with it.
    Thus, there should be one button that submits the form and which invokes
