From 8df9fdcc3990c8211014a9217935d7f4fb400195 Mon Sep 17 00:00:00 2001
From: Ruben Bridgewater <ruben@bridgewater.de>
Date: Tue, 26 Mar 2019 06:48:17 +0100
Subject: [PATCH] path: remove dead code
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

A couple of code parts could not be reached due to resolving the path
in the beginning. That "normalizes" the path in a way that some code
branches became obsolete.

PR-URL: https://github.com/nodejs/node/pull/26916
Reviewed-By: Sam Roberts <vieuxtech@gmail.com>
Reviewed-By: Michaƫl Zasso <targos@protonmail.com>
---
 lib/path.js | 51 ++++++++++++++-------------------------------------
 1 file changed, 14 insertions(+), 37 deletions(-)

diff --git a/lib/path.js b/lib/path.js
index 9ac877eabcaf44..a41787dd66f61e 100644
--- a/lib/path.js
+++ b/lib/path.js
@@ -1054,29 +1054,18 @@ const posix = {
     if (from === to)
       return '';
 
+    // Trim leading forward slashes.
     from = posix.resolve(from);
     to = posix.resolve(to);
 
     if (from === to)
       return '';
 
-    // Trim any leading backslashes
-    let fromStart = 1;
-    while (fromStart < from.length &&
-           from.charCodeAt(fromStart) === CHAR_FORWARD_SLASH) {
-      fromStart++;
-    }
+    const fromStart = 1;
     const fromEnd = from.length;
-    const fromLen = (fromEnd - fromStart);
-
-    // Trim any leading backslashes
-    let toStart = 1;
-    while (toStart < to.length &&
-           to.charCodeAt(toStart) === CHAR_FORWARD_SLASH) {
-      toStart++;
-    }
-    const toEnd = to.length;
-    const toLen = (toEnd - toStart);
+    const fromLen = fromEnd - fromStart;
+    const toStart = 1;
+    const toLen = to.length - toStart;
 
     // Compare paths to find the longest common path from root
     const length = (fromLen < toLen ? fromLen : toLen);
@@ -1101,38 +1090,26 @@ const posix = {
           // For example: from='/'; to='/foo'
           return to.slice(toStart + i);
         }
-      } else if (fromLen > length) {
-        if (from.charCodeAt(fromStart + i) === CHAR_FORWARD_SLASH) {
-          // We get here if `to` is the exact base path for `from`.
-          // For example: from='/foo/bar/baz'; to='/foo/bar'
-          lastCommonSep = i;
-        } else if (i === 0) {
-          // We get here if `to` is the root.
-          // For example: from='/foo'; to='/'
-          lastCommonSep = 0;
-        }
+      } else if (fromLen > length &&
+                 from.charCodeAt(fromStart + i) === CHAR_FORWARD_SLASH) {
+        // We get here if `to` is the exact base path for `from`.
+        // For example: from='/foo/bar/baz'; to='/foo/bar'
+        lastCommonSep = i;
       }
     }
 
-    var out = '';
+    let out = '';
     // Generate the relative path based on the path difference between `to`
-    // and `from`
+    // and `from`.
     for (i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i) {
       if (i === fromEnd || from.charCodeAt(i) === CHAR_FORWARD_SLASH) {
         out += out.length === 0 ? '..' : '/..';
       }
     }
 
-    toStart += lastCommonSep;
-
     // Lastly, append the rest of the destination (`to`) path that comes after
-    // the common path parts
-    if (out.length > 0)
-      return `${out}${to.slice(toStart)}`;
-
-    if (to.charCodeAt(toStart) === CHAR_FORWARD_SLASH)
-      ++toStart;
-    return to.slice(toStart);
+    // the common path parts.
+    return `${out}${to.slice(toStart + lastCommonSep)}`;
   },
 
   toNamespacedPath(path) {