summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2012-01-04 16:40:10 -0600
committerJesse Luehrs <doy@tozt.net>2012-01-04 16:40:10 -0600
commit73b6d62558003113da61a5e5926ea67aa47c6ae5 (patch)
treea0313a65c21ee67e6e90ea7fc30e2ab63b01bf1d /lib
parent8322efee06fbf44b8a8fa3717f933bae3632073d (diff)
downloadcircular-require-73b6d62558003113da61a5e5926ea67aa47c6ae5.tar.gz
circular-require-73b6d62558003113da61a5e5926ea67aa47c6ae5.zip
don't hang if all packages are hidden
Diffstat (limited to 'lib')
-rw-r--r--lib/circular/require.pm8
1 files changed, 6 insertions, 2 deletions
diff --git a/lib/circular/require.pm b/lib/circular/require.pm
index b7f71c2..234be83 100644
--- a/lib/circular/require.pm
+++ b/lib/circular/require.pm
@@ -62,8 +62,12 @@ sub _require {
my $depth = 0;
my $caller;
- $caller = caller( $depth++ )
- while !$caller || grep { m/^$caller$/ } @hide;
+ do {
+ $caller = caller($depth++)
+ } while defined($caller) && grep { m/^$caller$/ } @hide;
+
+ $caller = '<unknown package>'
+ unless defined $caller;
warn "Circular require detected: $string_file (from $caller)\n";
}