diff --git a/src/vs/workbench/api/electron-browser/mainThreadFileSystem.ts b/src/vs/workbench/api/electron-browser/mainThreadFileSystem.ts index 3ad9bff063c..0a948e1cfbb 100644 --- a/src/vs/workbench/api/electron-browser/mainThreadFileSystem.ts +++ b/src/vs/workbench/api/electron-browser/mainThreadFileSystem.ts @@ -139,10 +139,13 @@ class RemoteFileSystemProvider implements IFileSystemProvider { } read(fd: number, pos: number, data: Uint8Array, offset: number, length: number): Promise { - return this._proxy.$read(this._handle, fd, pos, RemoteFileSystemProvider._asBuffer(data), offset, length); + return this._proxy.$read(this._handle, fd, pos, length).then(readData => { + data.set(readData, offset); + return readData.byteLength; + }); } write(fd: number, pos: number, data: Uint8Array, offset: number, length: number): Promise { - return this._proxy.$write(this._handle, fd, pos, RemoteFileSystemProvider._asBuffer(data), offset, length); + return this._proxy.$write(this._handle, fd, pos, Buffer.from(data, offset, length)); } } diff --git a/src/vs/workbench/api/node/extHost.protocol.ts b/src/vs/workbench/api/node/extHost.protocol.ts index 04635c90791..d8e363a64a2 100644 --- a/src/vs/workbench/api/node/extHost.protocol.ts +++ b/src/vs/workbench/api/node/extHost.protocol.ts @@ -726,8 +726,8 @@ export interface ExtHostFileSystemShape { $unwatch(handle: number, session: number): void; $open(handle: number, resource: UriComponents): Promise; $close(handle: number, fd: number): Promise; - $read(handle: number, fd: number, pos: number, data: Buffer, offset: number, length: number): Promise; - $write(handle: number, fd: number, pos: number, data: Buffer, offset: number, length: number): Promise; + $read(handle: number, fd: number, pos: number, length: number): Promise; + $write(handle: number, fd: number, pos: number, data: Buffer): Promise; } export interface ExtHostSearchShape { diff --git a/src/vs/workbench/api/node/extHostFileSystem.ts b/src/vs/workbench/api/node/extHostFileSystem.ts index 9753a6ed749..f1fe101d1c1 100644 --- a/src/vs/workbench/api/node/extHostFileSystem.ts +++ b/src/vs/workbench/api/node/extHostFileSystem.ts @@ -290,14 +290,17 @@ export class ExtHostFileSystem implements ExtHostFileSystemShape { return Promise.resolve(this._fsProvider.get(handle).close(fd)); } - $read(handle: number, fd: number, pos: number, data: Buffer, offset: number, length: number): Promise { + $read(handle: number, fd: number, pos: number, length: number): Promise { this._checkProviderExists(handle); - return Promise.resolve(this._fsProvider.get(handle).read(fd, pos, data, offset, length)); + const data = Buffer.allocUnsafe(length); + return Promise.resolve(this._fsProvider.get(handle).read(fd, pos, data, 0, length)).then(read => { + return data.slice(0, read); // don't send zeros + }); } - $write(handle: number, fd: number, pos: number, data: Buffer, offset: number, length: number): Promise { + $write(handle: number, fd: number, pos: number, data: Buffer): Promise { this._checkProviderExists(handle); - return Promise.resolve(this._fsProvider.get(handle).write(fd, pos, data, offset, length)); + return Promise.resolve(this._fsProvider.get(handle).write(fd, pos, data, 0, data.length)); } }