@@ -287,13 +287,21 @@
   $pid = NULL;
   $old_alias = NULL;
   if ($op == 'update' or $op == 'bulkupdate') {
-    if (variable_get('pathauto_update_action', 2) == 0) {
-      // Do nothing
+	// create new alias on update if update action is "Do nothing" and no alias currently set
+	// from http://drupal.org/node/478718 , http://drupal.org/node/285042
+	$existing = db_fetch_object(db_query("SELECT pid, dst FROM {url_alias} WHERE src='%s'", $src));
+	if ($existing) {
+		$action = variable_get('pathauto_update_action', 2);
+		if ($action == 0) {
+			// do nothing
       return '';
     }
-    $update_data = _pathauto_existing_alias_data($src);
-    $pid = $update_data['pid'];
-    $old_alias = $update_data['old_alias'];
+		else if ($action != 1) {
+			// replacing current alias
+			$pid = $existing->pid;
+		}
+		$old_alias = $existing->dst;
+	}
   }
 
   // Replace the placeholders with the values provided by the module.
