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 @@ -1986,8 +1986,29 @@ static void ReadDir(const FunctionCallbackInfo<Value>& args) {
1986
1986
1987
1987
BufferValue path (isolate, args[0 ]);
1988
1988
CHECK_NOT_NULL (*path);
1989
+ #ifdef _WIN32
1990
+ // On Windows, some API functions accept paths with trailing slashes,
1991
+ // while others do not. This code checks if the input path ends with
1992
+ // a slash (either '/' or '\\') and, if so, ensures that the processed
1993
+ // path also ends with a trailing backslash ('\\').
1994
+ bool slashCheck = false ;
1995
+ if (path.ToStringView ().ends_with (" /" ) ||
1996
+ path.ToStringView ().ends_with (" \\ " )) {
1997
+ slashCheck = true ;
1998
+ }
1999
+ #endif
2000
+
1989
2001
ToNamespacedPath (env, &path);
1990
2002
2003
+ #ifdef _WIN32
2004
+ if (slashCheck) {
2005
+ size_t new_length = path.length () + 1 ;
2006
+ path.AllocateSufficientStorage (new_length + 1 );
2007
+ path.SetLengthAndZeroTerminate (new_length);
2008
+ path.out ()[new_length - 1 ] = ' \\ ' ;
2009
+ }
2010
+ #endif
2011
+
1991
2012
const enum encoding encoding = ParseEncoding (isolate, args[1 ], UTF8);
1992
2013
1993
2014
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