File tree 2 files changed +42
-0
lines changed
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) {
1887
1887
1888
1888
BufferValue path (isolate, args[0 ]);
1889
1889
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
+
1890
1902
ToNamespacedPath (env, &path);
1891
1903
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
+
1892
1913
const enum encoding encoding = ParseEncoding (isolate, args[1 ], UTF8);
1893
1914
1894
1915
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