File tree Expand file tree Collapse file tree 2 files changed +42
-0
lines changed Expand file tree Collapse file tree 2 files changed +42
-0
lines changed Original file line number Diff line number Diff line change @@ -1887,8 +1887,29 @@ static void ReadDir(const FunctionCallbackInfo<Value>& args) {
18871887
18881888 BufferValue path (isolate, args[0 ]);
18891889 CHECK_NOT_NULL (*path);
1890+ #ifdef _WIN32
1891+ // On Windows, some API functions accept paths with trailing slashes,
1892+ // while others do not. This code checks if the input path ends with
1893+ // a slash (either '/' or '\\') and, if so, ensures that the processed
1894+ // path also ends with a trailing backslash ('\\').
1895+ bool slashCheck = false ;
1896+ if (path.ToStringView ().ends_with (" /" ) ||
1897+ path.ToStringView ().ends_with (" \\ " )) {
1898+ slashCheck = true ;
1899+ }
1900+ #endif
1901+
18901902 ToNamespacedPath (env, &path);
18911903
1904+ #ifdef _WIN32
1905+ if (slashCheck) {
1906+ size_t new_length = path.length () + 1 ;
1907+ path.AllocateSufficientStorage (new_length + 1 );
1908+ path.SetLengthAndZeroTerminate (new_length);
1909+ path.out ()[new_length - 1 ] = ' \\ ' ;
1910+ }
1911+ #endif
1912+
18921913 const enum encoding encoding = ParseEncoding (isolate, args[1 ], UTF8);
18931914
18941915 bool with_types = args[2 ]->IsTrue ();
Original file line number Diff line number Diff line change 1+ 'use strict' ;
2+
3+ const common = require ( '../common' ) ;
4+ const assert = require ( 'assert' ) ;
5+ const { readdir, readdirSync } = require ( 'fs' ) ;
6+
7+ if ( ! common . isWindows ) {
8+ common . skip ( 'This test is specific to Windows to test enumerate pipes' ) ;
9+ }
10+
11+ // Ref: https://github.com/nodejs/node/issues/56002
12+ // This test is specific to Windows.
13+
14+ const pipe = '\\\\.\\pipe\\' ;
15+
16+ const { length } = readdirSync ( pipe ) ;
17+ assert . ok ( length >= 0 , `${ length } is not greater or equal to 0` ) ;
18+
19+ readdir ( pipe , common . mustSucceed ( ( files ) => {
20+ assert . ok ( files . length >= 0 , `${ files . length } is not greater or equal to 0` ) ;
21+ } ) ) ;
You can’t perform that action at this time.
0 commit comments