@@ -95,13 +95,17 @@ sub cleanup {
9595 file_path(' fa' , ' faa' , ' faa_ord' ),
9696 file_path(' fa' , ' fab' , ' fab_ord' ),
9797 file_path(' fa' , ' fab' , ' faba' , ' faba_ord' ),
98+ file_path(' fa' , ' fac' , ' faca' ),
9899 file_path(' fb' , ' fb_ord' ),
99- file_path(' fb' , ' fba' , ' fba_ord' );
100+ file_path(' fb' , ' fba' , ' fba_ord' ),
101+ file_path(' fb' , ' fbc' , ' fbca' );
100102 rmdir dir_path(' fa' , ' faa' );
101103 rmdir dir_path(' fa' , ' fab' , ' faba' );
102104 rmdir dir_path(' fa' , ' fab' );
105+ rmdir dir_path(' fa' , ' fac' );
103106 rmdir dir_path(' fa' );
104107 rmdir dir_path(' fb' , ' fba' );
108+ rmdir dir_path(' fb' , ' fbc' );
105109 rmdir dir_path(' fb' );
106110 }
107111 if ($need_updir ) {
@@ -893,3 +897,36 @@ if ($^O eq 'MSWin32') {
893897 File::Find::find( {wanted => \&wanted_File_Dir, no_chdir => 1}, $volume . topdir(' fa' ));
894898 Check( scalar (keys %Expect_File ) == 0 );
895899}
900+
901+
902+ if ($symlink_exists ) { # Issue 68260
903+ print " # BUG 68260\n " ;
904+ MkDir (dir_path (' fa' , ' fac' ), 0770);
905+ MkDir (dir_path (' fb' , ' fbc' ), 0770);
906+ touch (file_path (' fa' , ' fac' , ' faca' ));
907+ if ($^O eq ' MacOS' ) {
908+ CheckDie (symlink (' ..::::..:fa:fac:faca' , ' fb:fbc:fbca' ));
909+ }
910+ else {
911+ CheckDie (symlink (' ..////../fa/fac/faca' , ' fb/fbc/fbca' ));
912+ }
913+
914+ use warnings;
915+ my $dangling_symlink ;
916+ local $SIG {__WARN__ } = sub {
917+ local $" = " " ;
918+ $dangling_symlink ++ if " @_ " =~ / dangling symbolic link/ ;
919+ };
920+
921+ File::Find::find (
922+ {
923+ wanted => sub {1;},
924+ follow => 1,
925+ follow_skip => 2,
926+ dangling_symlinks => 1,
927+ },
928+ File::Spec -> curdir
929+ );
930+
931+ Check (!$dangling_symlink );
932+ }
0 commit comments