--- path.module?revision=1.105.2.3&pathrev=DRUPAL-5	2009-02-20 10:38:04.000000000 +0100
+++ path.module.patched	2009-02-20 10:53:02.000000000 +0100
@@ -141,6 +141,11 @@
     $path_count = db_result(db_query("SELECT COUNT(src) FROM {url_alias} WHERE src = '%s'", $path));
     $alias = urldecode($alias);
     $alias_count = db_result(db_query("SELECT COUNT(dst) FROM {url_alias} WHERE dst = '%s'", $alias));
+    $existence_count = db_result(db_query("SELECT COUNT(*) FROM {url_alias} WHERE src = '%s' AND dst = '%s'", $path, $alias);
+    if($existence_count) {
+      // (src, dst) pair already exists, so do nothing.
+      return;
+    }
 
     // We have an insert:
     if ($path_count == 0 && $alias_count == 0) {
@@ -163,8 +168,7 @@
     else if ($path_count == 1 && $alias_count == 1) {
       // This will delete the path that alias was originally pointing to:
       path_set_alias(NULL, $alias);
-      path_set_alias($path);
-      path_set_alias($path, $alias);
+      path_set_alias($path, $alias, $pid);
     }
   }
 }
