--- pathauto.inc	2008-10-27 19:52:28.000000000 -0700
+++ pathauto.inc	2008-10-27 19:52:28.000000000 -0700
@@ -141,6 +141,9 @@ function pathauto_cleanstring($string, $
   $separator = variable_get('pathauto_separator', '-');
   $output = $string;
   $punctuation = pathauto_punctuation_chars();
+  if (!$clean_slash) {
+    unset($punctuation['slash']);
+  }
   foreach ($punctuation as $name => $details) {
     $action = variable_get('pathauto_punctuation_'. $name, 0);
     // 2 is the action for "do nothing" with the punctuation
@@ -150,11 +153,6 @@ function pathauto_cleanstring($string, $
     }
   }
 
-  // If something is already urlsafe then don't remove slashes
-  if ($clean_slash) {
-    $output = str_replace('/', '', $output);
-  }
-
   // Optionally remove accents and transliterate
   if (variable_get('pathauto_transliterate', FALSE)) {
     static $i18n_loaded = false;
@@ -473,7 +471,7 @@ function pathauto_clean_token_values($fu
 function pathauto_punctuation_chars() {
   $punctuation = array();
 
-  // Handle " ' ` , . - _ : ; | { [ } ] + = * & % ^ $ # @ ! ~ ( ) ? < > \
+  // Handle " ' ` , . - _ : ; | { [ } ] + = * & % ^ $ # @ ! ~ ( ) ? < > / \
   $punctuation['double_quotes']      = array('value' => '"', 'name' => t('Double quotes "'));
   $punctuation['quotes']             = array('value' => "'", 'name' => t("Single quotes (apostrophe) '"));
   $punctuation['backtick']           = array('value' => '`', 'name' => t('Back tick `'));
@@ -504,6 +502,7 @@ function pathauto_punctuation_chars() {
   $punctuation['question_mark']      = array('value' => '?', 'name' => t('Question mark ?'));
   $punctuation['less_than']          = array('value' => '<', 'name' => t('Less than <'));
   $punctuation['greater_than']       = array('value' => '>', 'name' => t('Greater than >'));
+  $punctuation['slash']              = array('value' => '/', 'name' => t('Forward slash /'));
   $punctuation['back_slash']         = array('value' => '\\', 'name' => t('Back slash \\'));
 
   return $punctuation;
