File tree 1 file changed +25
-0
lines changed
1 file changed +25
-0
lines changed Original file line number Diff line number Diff line change @@ -675,6 +675,11 @@ pub fn mkdir_recursive(p: &Path, mode: c_int) -> bool {
675
675
/// Lists the contents of a directory
676
676
#[ allow( non_implicitly_copyable_typarams) ]
677
677
pub fn list_dir ( p : & Path ) -> ~[ ~str ] {
678
+ if p. components . is_empty ( ) && !p. is_absolute ( ) {
679
+ // Not sure what the right behavior is here, but this
680
+ // prevents a bounds check failure later
681
+ return ~[ ] ;
682
+ }
678
683
unsafe {
679
684
#[ cfg( target_os = "linux" ) ]
680
685
#[ cfg( target_os = "android" ) ]
@@ -1596,6 +1601,26 @@ mod tests {
1596
1601
}
1597
1602
}
1598
1603
1604
+ #[test]
1605
+ fn list_dir_empty_path() {
1606
+ let dirs = os::list_dir(&Path(" "));
1607
+ assert!(dirs.is_empty());
1608
+ }
1609
+
1610
+ #[test]
1611
+ #[cfg(not(windows))]
1612
+ fn list_dir_root() {
1613
+ let dirs = os::list_dir(&Path(" /"));
1614
+ assert!(dirs.len() > 1);
1615
+ }
1616
+ #[test]
1617
+ #[cfg(windows)]
1618
+ fn list_dir_root() {
1619
+ let dirs = os::list_dir(&Path(" C : \\ ") ) ;
1620
+ assert ! ( dirs. len( ) > 1 ) ;
1621
+ }
1622
+
1623
+
1599
1624
#[ test]
1600
1625
fn path_is_dir ( ) {
1601
1626
assert ! ( ( os:: path_is_dir( & Path ( "." ) ) ) ) ;
You can’t perform that action at this time.
0 commit comments