diff --git a/lib/glob.c b/lib/glob.c index df2b23e6..f221a531 100644 --- a/lib/glob.c +++ b/lib/glob.c @@ -1335,7 +1335,7 @@ glob_in_dir (pattern, directory, flags, errfunc, pglob) /* If we shall match only directories use the information provided by the dirent call if possible. */ if ((flags & GLOB_ONLYDIR) - && d->d_type != DT_UNKNOWN && d->d_type != DT_DIR) + && d->d_type != DT_UNKNOWN && d->d_type != DT_DIR && d->d_type != DT_LNK) continue; #endif diff --git a/tests/scripts/functions/wildcard b/tests/scripts/functions/wildcard index f91d9adb..ad96473d 100644 --- a/tests/scripts/functions/wildcard +++ b/tests/scripts/functions/wildcard @@ -100,4 +100,19 @@ unlink('xxx.yyy'); run_make_test(q!exists: ; @echo file=$(wildcard xxx.yyy)!, '', "file=\n"); +# TEST #6: check for wildcards matching directories +# See SV 53465 + +if ($port_type ne 'W32' && eval { symlink("",""); 1 }) { + my $dir = '__rdir'; + my $lnk = '__ldir'; + mkdir($dir, 0777); + symlink($dir, $lnk); + + run_make_test(qq!all: ; \@echo \$(wildcard $lnk*/.)!, '', "$lnk/."); + + unlink($lnk); + rmdir($dir); +} + 1;