Index: node_expire.nodeapi.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/node_expire/node_expire.nodeapi.inc,v
retrieving revision 1.4
diff -u -p -r1.4 node_expire.nodeapi.inc
--- node_expire.nodeapi.inc	31 Jan 2009 01:26:53 -0000	1.4
+++ node_expire.nodeapi.inc	5 Jun 2009 14:30:57 -0000
@@ -24,7 +24,10 @@ function _node_expire_nodeapi(&$ntypes, 
 
     case 'prepare':
       if (!isset($node->expire)) {
-        $node->expire = format_date(strtotime($ntypes['default']), 'custom', NODE_EXPIRE_FORMAT);
+        $ntypes = variable_get('node_expire_ntypes', array());
+        if ($ntypes['default']) {
+          $node->expire = format_date(strtotime($ntypes['default']), 'custom', NODE_EXPIRE_FORMAT);
+        }
       }
       break;
 
@@ -50,12 +53,16 @@ function _node_expire_nodeapi(&$ntypes, 
     case 'update':
     case 'insert':
       $update = array();
-      if (isset($node->node_expire)) {
-        $update[] = 'nid';
+      // has the expiration been removed, or does it exist?
+      if (isset($node->expire)) {
+        db_query('DELETE FROM {node_expire} WHERE nid = %d', $node->nid);
+        // should we create a new record?
+        if ($node->expire) {
+          $node->expire = strtotime($node->expire);
+          $node->expired = FALSE;
+          drupal_write_record('node_expire', $node);
+        }
       }
-      $node->expire   = strtotime($node->expire);
-      $node->expired  = FALSE;
-      drupal_write_record('node_expire', $node, $update);
       break;
 
     case 'delete':
