Skip to content

fs: accept Buffer paths in fs.promises.cp - #62950

Closed
maruthang wants to merge 1 commit into
nodejs:mainfrom
maruthang:fix-58869-cp-promise-buffer-paths
Closed

maruthang wants to merge 1 commit into
nodejs:mainfrom
maruthang:fix-58869-cp-promise-buffer-paths

Conversation

@maruthang

Copy link
Copy Markdown
Contributor

fs.promises.cp threw ERR_INVALID_ARG_TYPE when given Buffer paths,
while fs.cpSync accepted them. The async helper at
lib/internal/fs/cp/cp.js calls path.resolve/dirname/join on the
raw input, and the path module rejects non-strings. The sync path
lives in C++ and accepts Buffer transparently via BufferValue.

Convert Buffer/Uint8Array paths to UTF-8 strings at the entry of
cpFn so the async implementation matches the documented
string | Buffer | URL contract and the sync behavior. URL paths
are already pre-converted by getValidatedPath upstream and so are
unaffected.

Fixes: #58869


Note: I was unable to run the project's test suite locally on this Windows host (no built out/Release/node). The changed files lint clean and pass node --check. Relying on CI for full verification — happy to iterate on any failures.

fs.promises.cp threw ERR_INVALID_ARG_TYPE when given Buffer paths,
while fs.cpSync accepted them. The async helper at
lib/internal/fs/cp/cp.js calls path.resolve/dirname/join on the
raw input, and the path module rejects non-strings. The sync path
lives in C++ and accepts Buffer transparently via BufferValue.

Convert Buffer/Uint8Array paths to UTF-8 strings at the entry of
cpFn so the async implementation matches the documented
string | Buffer | URL contract and the sync behavior. URL paths
are already pre-converted by getValidatedPath upstream and so are
unaffected.

Fixes: nodejs#58869
Signed-off-by: Maruthan G <maruthang4@gmail.com>
@nodejs-github-bot nodejs-github-bot added fs Issues and PRs related to file-system APIs and the fs module. needs-ci PRs that need a full CI run. labels Apr 25, 2026
@github-actions

Copy link
Copy Markdown
Contributor

This pull request has been marked as stale due to 90 days of inactivity.
It will be automatically closed in 30 days if no further activity occurs. If this is still relevant, please leave a comment or update it to keep it open.

@github-actions github-actions Bot added the stale Issues and PRs marked stale due to inactivity and scheduled for automatic closure. label Jul 28, 2026
@github-actions

Copy link
Copy Markdown
Contributor

This pull request has been automatically closed after 30 days of inactivity following its stale status (no activity for a total of 120 days).
If this is still relevant, feel free to reopen it or leave a comment with additional details so we can continue the discussion.

@github-actions github-actions Bot closed this Aug 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

fs Issues and PRs related to file-system APIs and the fs module. needs-ci PRs that need a full CI run. stale Issues and PRs marked stale due to inactivity and scheduled for automatic closure.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

fsPromises.cp(...) inconsistencies and bugs

2 participants