diff -Naubr mailchimp/mailchimp.admin.inc modules/mailchimp/mailchimp.admin.inc
--- mailchimp/mailchimp.admin.inc	2010-10-26 15:54:57.000000000 +0000
+++ modules/mailchimp/mailchimp.admin.inc	2011-02-08 16:49:47.000000000 +0000
@@ -42,7 +42,7 @@
             '#tree'         => TRUE
         );
         foreach ($lists as $list) {
-          $saved_list = unserialize(variable_get('mailchimp_lists', NULL));
+          $saved_list = variable_get('mailchimp_lists', array());
           $saved_list = $saved_list[$list['id']];
 
           $form['mailchimp_lists']['mailchimp_list_' . $list['id']] = array(
@@ -255,5 +255,5 @@
 
   // remove lists from the form_state
   unset($form_state['values']['mailchimp_lists']);
-  variable_set('mailchimp_lists', serialize($lists));
+  variable_set('mailchimp_lists', $lists);
 }
diff -Naubr mailchimp/mailchimp.info modules/mailchimp/mailchimp.info
--- mailchimp/mailchimp.info	2010-10-27 00:11:24.000000000 +0000
+++ modules/mailchimp/mailchimp.info	2011-02-08 17:16:27.000000000 +0000
@@ -16,5 +16,5 @@
 version = "7.x-1.x-dev"
 core = "7.x"
 project = "mailchimp"
-datestamp = "1288138284"
+datestamp = "1297185372"
 
diff -Naubr mailchimp/mailchimp.install modules/mailchimp/mailchimp.install
--- mailchimp/mailchimp.install	2010-07-14 20:02:15.000000000 +0000
+++ modules/mailchimp/mailchimp.install	2011-02-08 17:25:56.000000000 +0000
@@ -91,6 +91,24 @@
 }
 
 /**
+ * Implements hook_update_N().
+ *
+ * Fix for double serialized list data
+ */
+function mailchimp_update_7001() {
+  $lists = variable_get('mailchimp_lists', array());
+
+  if (!empty($lists)) {
+    $unserialized_list = unserialize($lists);
+    if ($unserialized_list) {
+      variable_set('mailchimp_lists', $unserialized_list);
+    }
+  }
+
+  return TRUE;
+}
+
+/**
  * Implements hook_uninstall().
  */
 function mailchimp_uninstall() {
diff -Naubr mailchimp/mailchimp.module modules/mailchimp/mailchimp.module
--- mailchimp/mailchimp.module	2010-10-26 16:49:42.000000000 +0000
+++ modules/mailchimp/mailchimp.module	2011-02-08 17:23:57.000000000 +0000
@@ -19,7 +19,7 @@
   $edit = $form;
   $account = $form['#user'];
   $category = $form['#user_category'];
-  if (TRUE && variable_get('mailchimp_user_register', TRUE)) {
+  if (variable_get('mailchimp_user_register', TRUE)) {
     $account->roles = array(2 => 'authenticated');
     if (count(_mailchimp_get_available_lists($account)) > 0 ) {
       // wrap in a fieldset
@@ -27,7 +27,7 @@
         '#type' => 'fieldset',
         '#title' => t('Newsletters')
       );
-      $form['mailchimp_lists'][] = mailchimp_subscribe_auth_form(NULL, $account, FALSE);
+      $form['mailchimp_lists'][] = mailchimp_subscribe_auth_form(NULL, NULL, $account, FALSE);
       $form['#submit'][] = 'mailchimp_subscribe_auth_form_submit';
     }
   }
@@ -134,7 +134,7 @@
  */
 function mailchimp_subscribe_auth_form($form, $form_state, $account, $standalone = TRUE, $list = NULL) {
   if ($q = _mailchimp_get_api_object()) {
-    if ($account->uid) {
+    if ($account->uid > 0) {
       $form['uid'] = array(
         '#type' => 'hidden',
         '#value' => $account->uid
@@ -171,7 +171,7 @@
 
   // ignore required lists, handled by hook_user
   if ($list->listtype !== MAILCHIMP_LISTTYPE_REQUIRED) {
-    if ($account && $account->uid) {
+    if ($account && $account->uid > 0) {
       $memberinfo = $q->listMemberInfo($list->id, $account->mail);
       $is_subscribed = $memberinfo['status'] == 'subscribed';
       $default_value = $is_subscribed;
@@ -828,7 +828,7 @@
  */
 function _mailchimp_load_user_list_mergevars($uid, $list_id, $mergevars) {
   $account = mailchimp_get_merge_values($uid);
-  $lists = unserialize(variable_get('mailchimp_lists', array()));
+  $lists = variable_get('mailchimp_lists', array());
   $list = $lists[$list_id];
 
   $uservars = array(
@@ -919,10 +919,9 @@
  * Get all of the lists that the given user can subscribe to
  */
 function _mailchimp_get_available_lists($user) {
-  $all_lists = variable_get('mailchimp_lists', array());
+  $all_lists = variable_get('mailchimp_lists', NULL);
   $available_lists = array();
-  if (!empty($all_lists)) {
-    $all_lists = unserialize($all_lists);
+  if (is_array($all_lists)) {
     foreach ($all_lists as $key => $list) {
       foreach ($user->roles as $rid => $info) {
         if (!empty($list->roles[$rid])) {
@@ -940,10 +939,8 @@
  * Get all of the lists that the given user must be subscribed to
  */
 function _mailchimp_get_required_lists() {
-  $data = variable_get('mailchimp_lists', NULL);
-  $lists = array();
-  if (!empty($data)) {
-    $lists = unserialize($data);
+  $lists = variable_get('mailchimp_lists', NULL);
+  if (is_array($lists)) {
     foreach ($lists as $key => $list) {
       if ($list->listtype !== MAILCHIMP_LISTTYPE_REQUIRED) {
         unset($lists[$key]);
@@ -975,9 +972,8 @@
  */
 function mailchimp_block_info() {
   $blocks = array();
-  $all_lists = variable_get('mailchimp_lists', array());
-  if (!empty($all_lists)) {
-    $all_lists = unserialize($all_lists);
+  $all_lists = variable_get('mailchimp_lists', NULL);
+  if (is_array($all_lists)) {
     foreach ($all_lists as $key => $list) {
       // exclude required lists
       if ($list->listtype !== MAILCHIMP_LISTTYPE_REQUIRED) {
