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