Index: modules/upload.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/upload.module,v
retrieving revision 1.79
diff -u -r1.79 upload.module
--- modules/upload.module	10 Mar 2006 19:03:25 -0000	1.79
+++ modules/upload.module	12 Mar 2006 18:08:18 -0000
@@ -250,8 +250,8 @@
   $filesize = 0;
 
 
-  // Check if node->files exists, and if it contains something.
-  if (count($node->files) && is_array($node->files)) {
+  // Check if node->files exists.
+  if (is_array($node->files)) {
     // Update existing files with form data.
     foreach($node->files as $fid => $file) {
 
@@ -429,57 +429,57 @@
 }
 
 function upload_save($node) {
-  foreach ($node->files as $fid => $file) {
-    // Convert file to object for compatability
-    $file = (object)$file;
-
-    // Remove file. Process removals first since no further processing
-    // will be required.
-    if ($file->remove) {
-      // Remove file previews...
-      if (strpos($file->fid, 'upload') !== false) {
-          file_delete($file->filepath);
-      }
-
-      // Remove managed files.
-      else {
-        db_query('DELETE FROM {file_revisions} WHERE fid = %d AND vid = %d', $fid, $node->vid);
-        // Only delete a file if it isn't used by any revision
-        $count = db_result(db_query('SELECT COUNT(fid) FROM {file_revisions} WHERE fid = %d', $fid));
-        if ($count < 1) {
-          db_query('DELETE FROM {files} WHERE fid = %d', $fid);
+  if (is_array($node->files)) {
+    foreach ($node->files as $fid => $file) {
+      // Convert file to object for compatability
+      $file = (object)$file;
+
+      // Remove file. Process removals first since no further processing
+      // will be required.
+      if ($file->remove) {
+        // Remove file previews...
+        if (strpos($file->fid, 'upload') !== false) {
           file_delete($file->filepath);
         }
+        // Remove managed files.
+        else {
+          db_query('DELETE FROM {file_revisions} WHERE fid = %d AND vid = %d', $fid, $node->vid);
+          // Only delete a file if it isn't used by any revision
+          $count = db_result(db_query('SELECT COUNT(fid) FROM {file_revisions} WHERE fid = %d', $fid));
+          if ($count < 1) {
+            db_query('DELETE FROM {files} WHERE fid = %d', $fid);
+            file_delete($file->filepath);
+          }
+        }
       }
-    }
 
-    // New file upload
-    elseif (strpos($file->fid, 'upload') !== false) {
-      if ($file = file_save_upload($file, $file->filename)) {
-        // Track the file which was submitted last, in case of a direct submission
-        // without preview or attach. See notes in upload_prepare.
-        if ($_SESSION['file_submitted'] == $file->fid) {
-          $file->list = variable_get('upload_list_default',1);
+      // New file upload
+      elseif (strpos($file->fid, 'upload') !== false) {
+        if ($file = file_save_upload($file, $file->filename)) {
+          // Track the file which was submitted last, in case of a direct submission
+          // without preview or attach. See notes in upload_prepare.
+          if ($_SESSION['file_submitted'] == $file->fid) {
+            $file->list = variable_get('upload_list_default',1);
+          }
+
+          $file->fid = db_next_id('{files}_fid');
+          db_query("INSERT INTO {files} (fid, nid, filename, filepath, filemime, filesize) VALUES (%d, %d, '%s', '%s', '%s', %d)", $file->fid, $node->nid, $file->filename, $file->filepath, $file->filemime, $file->filesize);
+          db_query("INSERT INTO {file_revisions} (fid, vid, list, description) VALUES (%d, %d, %d, '%s')", $file->fid, $node->vid, $file->list, $file->description);
         }
+        unset($_SESSION['file_previews'][$fid]);
+      }
 
-        $file->fid = db_next_id('{files}_fid');
-        db_query("INSERT INTO {files} (fid, nid, filename, filepath, filemime, filesize) VALUES (%d, %d, '%s', '%s', '%s', %d)", $file->fid, $node->nid, $file->filename, $file->filepath, $file->filemime, $file->filesize);
+      // Create a new revision, as needed
+      elseif ($node->old_vid && is_numeric($fid)) {
         db_query("INSERT INTO {file_revisions} (fid, vid, list, description) VALUES (%d, %d, %d, '%s')", $file->fid, $node->vid, $file->list, $file->description);
       }
-      unset($_SESSION['file_previews'][$fid]);
-    }
 
-    // Create a new revision, as needed
-    elseif ($node->old_vid && is_numeric($fid)) {
-      db_query("INSERT INTO {file_revisions} (fid, vid, list, description) VALUES (%d, %d, %d, '%s')", $file->fid, $node->vid, $file->list, $file->description);
-    }
-
-    // Update existing revision
-    else {
-      db_query("UPDATE {file_revisions} SET list = %d, description = '%s' WHERE fid = %d AND vid = %d", $file->list, $file->description, $file->fid, $node->vid);
+      // Update existing revision
+      else {
+        db_query("UPDATE {file_revisions} SET list = %d, description = '%s' WHERE fid = %d AND vid = %d", $file->list, $file->description, $file->fid, $node->vid);
+      }
     }
   }
-
   return;
 }
 
@@ -501,17 +501,18 @@
 }
 
 function upload_delete_revision($node) {
-  foreach ($node->files as $file) {
-    // Check if the file will be used after this revision is deleted
-    $count = db_result(db_query('SELECT COUNT(fid) FROM {file_revisions} WHERE fid = %d', $file->fid));
-
-    // if the file won't be used, delete it
-    if ($count < 2) {
-      db_query('DELETE FROM {files} WHERE fid = %d', $file->fid);
-      file_delete($file->filepath);
+  if (is_array($node->files)) {
+    foreach ($node->files as $file) {
+      // Check if the file will be used after this revision is deleted
+      $count = db_result(db_query('SELECT COUNT(fid) FROM {file_revisions} WHERE fid = %d', $file->fid));
+
+      // if the file won't be used, delete it
+      if ($count < 2) {
+        db_query('DELETE FROM {files} WHERE fid = %d', $file->fid);
+        file_delete($file->filepath);
+      }
     }
   }
-
   // delete the revision
   db_query('DELETE FROM {file_revisions} WHERE vid = %d', $node->vid);
 }
