Skip to content

Commit 46233c3

Browse files
authored
Don't remove trailing separator from drive letters (microsoft#89218)
Fixes microsoft/vscode-remote-release#1596
1 parent e0b0062 commit 46233c3

2 files changed

Lines changed: 4 additions & 5 deletions

File tree

src/vs/base/common/resources.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ export function hasTrailingPathSeparator(resource: URI, sep: string = paths.sep)
182182
return fsp.length > extpath.getRoot(fsp).length && fsp[fsp.length - 1] === sep;
183183
} else {
184184
const p = resource.path;
185-
return p.length > 1 && p.charCodeAt(p.length - 1) === CharCode.Slash; // ignore the slash at offset 0
185+
return (p.length > 1 && p.charCodeAt(p.length - 1) === CharCode.Slash) && !(/^[a-zA-Z]:(\/$|\\$)/.test(resource.fsPath)); // ignore the slash at offset 0
186186
}
187187
}
188188

@@ -191,6 +191,7 @@ export function hasTrailingPathSeparator(resource: URI, sep: string = paths.sep)
191191
* Important: Doesn't remove the first slash, it would make the URI invalid
192192
*/
193193
export function removeTrailingPathSeparator(resource: URI, sep: string = paths.sep): URI {
194+
// Make sure that the path isn't a drive letter. A trailing separator there is not removable.
194195
if (hasTrailingPathSeparator(resource, sep)) {
195196
return resource.with({ path: resource.path.substr(0, resource.path.length - 1) });
196197
}

src/vs/platform/windows/electron-main/windowsMainService.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ import { IWorkspaceIdentifier, isSingleFolderWorkspaceIdentifier, hasWorkspaceFi
2929
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
3030
import { Schemas } from 'vs/base/common/network';
3131
import { URI } from 'vs/base/common/uri';
32-
import { getComparisonKey, isEqual, normalizePath, originalFSPath, hasTrailingPathSeparator, removeTrailingPathSeparator } from 'vs/base/common/resources';
32+
import { getComparisonKey, isEqual, normalizePath, originalFSPath, removeTrailingPathSeparator } from 'vs/base/common/resources';
3333
import { getRemoteAuthority } from 'vs/platform/remote/common/remoteHosts';
3434
import { restoreWindowsState, WindowsStateStorageData, getWindowsStateStoreData } from 'vs/platform/windows/electron-main/windowsStateStorage';
3535
import { getWorkspaceIdentifier, IWorkspacesMainService } from 'vs/platform/workspaces/electron-main/workspacesMainService';
@@ -1062,9 +1062,7 @@ export class WindowsMainService extends Disposable implements IWindowsMainServic
10621062
uri = normalizePath(uri);
10631063

10641064
// remove trailing slash
1065-
if (hasTrailingPathSeparator(uri)) {
1066-
uri = removeTrailingPathSeparator(uri);
1067-
}
1065+
uri = removeTrailingPathSeparator(uri);
10681066

10691067
// File
10701068
if (isFileToOpen(toOpen)) {

0 commit comments

Comments
 (0)