--- pollfield.module	2008-02-23 02:21:26.000000000 +0800
+++ pollfield.module	2008-02-27 19:20:24.000000000 +0800
@@ -81,8 +81,10 @@ function pollfield_field($op, &$node, $f
       $node->pollfield[$field['field_name']]['active']  = $items[0]['active'];
       $db_info = content_database_info($field);
       $table = $db_info['table'];
+      if ($items) {
       db_query("DELETE FROM {pollfield} WHERE nid=%d AND field_name='%s'", $node->nid, $field['field_name']);
       db_query("INSERT INTO {pollfield} (nid, field_table, field_name, runtime, active) VALUES (%d, '%s', '%s', %d, %d)", $node->nid, $table, $field['field_name'], $items[0]['runtime'], $items[0]['active']);
+      }
       break;
 
     case 'delete':
@@ -349,9 +351,11 @@ function pollfield_widget($op, &$node, $
       }
       $items = $transposed;
 
-      // Don't save empty fields except the first value
+      // Don't save empty fields. If the poll is optional and 
+      // there are no choices created we should consider the
+      // poll to not have been created.
       foreach ($transposed as $delta => $item) {
-        if ($item['choice'] == '' && $delta > 0) {
+        if ($item['choice'] == '') {
           unset($items[$delta]);
         }
       }
