Index: filefield_paths.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/filefield_paths/filefield_paths.module,v
retrieving revision 1.19.2.32
diff -u -p -r1.19.2.32 filefield_paths.module
--- filefield_paths.module	2 Aug 2009 23:22:33 -0000	1.19.2.32
+++ filefield_paths.module	10 Sep 2009 16:18:28 -0000
@@ -132,6 +132,9 @@ function filefield_paths_form_alter(&$fo
           }
         }
 
+        // Ensure that field will accommodate longer token combinations.
+        $field_data['form_path'][$name]['#maxlength'] = 256;
+
         $field_data['form_path'][$name .'_cleanup'] = array(
           '#type' => 'fieldset',
           '#title' => t('!title cleanup settings', array('!title' => $field['title'])),
@@ -485,6 +488,10 @@ function filefield_paths_filefield_paths
     $file['filepath']['new'] = filefield_paths_process_string(file_directory_path() .'/'. $settings['filepath']['value'] .'/'. $file['filename']['new'], 'node', $node, $settings['filepath']);
     $file['filepath']['new'] = filefield_paths_process_string($file['filepath']['new'], 'field', array(0 => $file['field']), $settings['filepath']);
 
+    // Ensure that there are no double-slash sequences due to empty token values.
+    $file['filepath']['new'] = preg_replace('|/+|', '/', $file['filepath']['new']);
+    $file['filename']['new'] = preg_replace('|/+|', '/', $file['filename']['new']);
+
     // Finalize files if necessary
     if (dirname($file['filepath']['new']) != dirname($file['field']['filepath']) || $file['filename']['new'] != $file['field']['filename']) {
       if (filefield_paths_file_move($file)) {
Index: modules/image.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/filefield_paths/modules/Attic/image.inc,v
retrieving revision 1.1.2.5
diff -u -p -r1.1.2.5 image.inc
--- modules/image.inc	2 Aug 2009 23:22:33 -0000	1.1.2.5
+++ modules/image.inc	10 Sep 2009 19:21:58 -0000
@@ -48,11 +48,12 @@ function image_filefield_paths_form_subm
  */
 function image_filefield_paths_get_fields(&$node, &$ffp) {
   if ($node->type == 'image') {
-    $info = array();
+    $info = $origname = array();
 
-    $result = db_query('SELECT * FROM {image} WHERE nid = %d', $node->nid);
+    $result = db_query('SELECT i.*, f.origname FROM {image} i JOIN {files} f ON i.fid = f.fid  WHERE i.nid = %d', $node->nid);
     while ($data = db_fetch_object($result)) {
       $info[$data->image_size] = $data->fid;
+      $origname[$data->image_size] = $data->origname;
     }
 
     foreach ($node->images as $name => &$file) {
@@ -64,11 +65,12 @@ function image_filefield_paths_get_field
             'filepath' => &$file,
             'filename' => $file_info['basename'],
             'fid' => $info[$name],
-            'type' => $name
+            'type' => $name,
+            'origname' => $origname[$name],
           ),
           'module' => 'image',
           'name' => 'image',
-          'new' => $node->new_file
+          'new' => $node->new_file || $node->rebuild_images,
         );
 
         $ffp['#types']['image'] = TRUE;
@@ -98,10 +100,12 @@ function image_filefield_paths_update($o
   if (empty($field_name)) {
     $node = node_load($oid);
 
-    // Flag files for update.
-    $node->new_file = TRUE;
+    if (isset($node->images)) {
+      // Flag files for update.
+      $node->new_file = TRUE;
 
-    // Process Node.
-    filefield_paths_nodeapi($node, 'update', NULL, NULL);
+      // Process Node.
+      filefield_paths_nodeapi($node, 'update', NULL, NULL);
+    }
   }
 }
