--- imagecache.module.bak	2006-11-17 14:13:46.000000000 -0600
+++ imagecache.module	2006-11-17 14:14:48.000000000 -0600
@@ -77,7 +77,7 @@
 
 
   $destination = file_create_path() . '/imagecache/'. $preset['presetname'] .'/'. $path;
-  $tmpdestination = file_directory_temp() . str_replace(dirname($path), '', $path);
+  $tmpdestination = file_directory_temp() . '/' . $preset['presetid'] . str_replace(dirname($path) . '/', '', $path);
   $dir = dirname($destination);
   //drupal_set_message('$tmpdestination: '. $tmpdestination);
   //drupal_set_message('$destination: '. $destination);
@@ -101,35 +101,32 @@
   }
 
   //check if file exists to prevent multiple apache children from trying to generate.
-  if (!is_file($tmpdestination)) {
-    $generated = TRUE;
+  if (!is_file($tmpdestination)) {       
     file_copy($source, $tmpdestination);
+  }
+  foreach($actions as $action) {
+    switch($action['data']['function']) {
+      case 'resize':
+        if (!image_resize($tmpdestination, $tmpdestination, $action['data']['width'], $action['data']['height'])) {
+          watchdog('imagecache', t('Imagecache resize action ID %id failed.', array('%id' => $action['actionid'])), WATCHDOG_ERROR);
+        }
+        break;
+  
+      case 'scale':
+        if (!image_scale($tmpdestination, $tmpdestination, $action['data']['width'], $action['data']['height'])) {
+          watchdog('imagecache', t('Imagecache scale action ID %id failed.', array('%id' => $action['actionid'])), WATCHDOG_ERROR);
+        }
+        break;
 
-    foreach($actions as $action) {
-      switch($action['data']['function']) {
-        case 'resize':
-          if (!image_resize($tmpdestination, $tmpdestination, $action['data']['width'], $action['data']['height'])) {
-            watchdog('imagecache', t('Imagecache resize action ID %id failed.', array('%id' => $action['actionid'])), WATCHDOG_ERROR);
-          }
-          break;
-      
-        case 'scale':
-          if (!image_scale($tmpdestination, $tmpdestination, $action['data']['width'], $action['data']['height'])) {
-            watchdog('imagecache', t('Imagecache scale action ID %id failed.', array('%id' => $action['actionid'])), WATCHDOG_ERROR);
-          }
-          break;
-
-        case 'crop':
-          if (!image_crop($tmpdestination, $tmpdestination, $action['data']['xoffset'] , $action['data']['yoffset'],$action['data']['width'],$action['data']['height'])) {
-            watchdog('imagecache', t('Imagecache crop action ID %id failed.', array('%id' => $action['actionid'])), WATCHDOG_ERROR);
-          }
-          break;
-      }
+      case 'crop':
+        if (!image_crop($tmpdestination, $tmpdestination, $action['data']['xoffset'] , $action['data']['yoffset'],$action['data']['width'],$action['data']['height'])) {
+          watchdog('imagecache', t('Imagecache crop action ID %id failed.', array('%id' => $action['actionid'])), WATCHDOG_ERROR);
+        }
+        break;
     }
-    file_move($tmpdestination, $destination);
-  } else {
-    $generated = TRUE;
   }
+  file_move($tmpdestination, $destination);
+  $generated = TRUE;
 
   if ($generated)  {
     if (function_exists('mime_content_type')) {
