Index: modules/simpletest/tests/file.test
===================================================================
RCS file: /cvs/drupal/drupal/modules/simpletest/tests/file.test,v
retrieving revision 1.32
diff -u -r1.32 file.test
--- modules/simpletest/tests/file.test	2 Jun 2009 13:42:40 -0000	1.32
+++ modules/simpletest/tests/file.test	6 Jun 2009 23:12:13 -0000
@@ -1700,7 +1700,7 @@
     $loaded_file = db_query('SELECT * FROM {files} f WHERE f.fid = :fid', array(':fid' => $saved_file->fid))->fetch(PDO::FETCH_OBJ);
     $this->assertNotNull($loaded_file, t("Record exists in the database."));
     $this->assertEqual($loaded_file->status, $file->status, t("Status was saved correctly."));
-    $this->assertEqual($saved_file->filesize, filesize($file->filepath), t("File size was set correctly."), 'File');
+    $this->assertEqual($saved_file->filesize, filesize(file_create_path($file->filepath)), t("File size was set correctly."), 'File');
     $this->assertTrue($saved_file->timestamp > 1, t("File size was set correctly."), 'File');
 
 
Index: includes/file.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/file.inc,v
retrieving revision 1.170
diff -u -r1.170 file.inc
--- includes/file.inc	2 Jun 2009 13:42:40 -0000	1.170
+++ includes/file.inc	6 Jun 2009 23:12:13 -0000
@@ -331,7 +331,7 @@
 function file_save($file) {
   $file = (object)$file;
   $file->timestamp = REQUEST_TIME;
-  $file->filesize = filesize($file->filepath);
+  $file->filesize = filesize(file_create_path($file->filepath));
 
   if (empty($file->fid)) {
     drupal_write_record('files', $file);
@@ -985,19 +985,19 @@
   // Move uploaded files from PHP's upload_tmp_dir to Drupal's temporary
   // directory. This overcomes open_basedir restrictions for future file
   // operations.
-  $file->filepath = $file->destination;
-  if (!move_uploaded_file($_FILES['files']['tmp_name'][$source], $file->filepath)) {
+  $file->filepath = str_replace(file_directory_path() . '/', '', $file->destination);
+  if (!move_uploaded_file($_FILES['files']['tmp_name'][$source], $file->destination)) {
     form_set_error($source, t('File upload error. Could not move uploaded file.'));
     watchdog('file', 'Upload error. Could not move uploaded file %file to destination %destination.', array('%file' => $file->filename, '%destination' => $file->filepath));
     return FALSE;
   }
 
   // Set the permissions on the new file.
-  drupal_chmod($file->filepath);
+  drupal_chmod($file->destination);
 
   // If we are replacing an existing file re-use its database record.
   if ($replace == FILE_EXISTS_REPLACE) {
-    $existing_files = file_load_multiple(array(), array('filepath' => $file->filepath));
+    $existing_files = file_load_multiple(array(), array('filepath' => $file->destination));
     if (count($existing_files)) {
       $existing = reset($existing_files);
       $file->fid = $existing->fid;
