X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2F_Util.pm;fp=lib%2FDBIx%2FClass%2F_Util.pm;h=0afe2eabfd0f658efd0424464bdb96d22312c9af;hb=dac7972a0974db384637b7a8d9a661b08853b3cf;hp=cf7443ffb66c2ebff96a256cdffc0d0307d615bb;hpb=21302b468b6386eea6652d1eedb61752dfdd4dfa;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/_Util.pm b/lib/DBIx/Class/_Util.pm index cf7443f..0afe2ea 100644 --- a/lib/DBIx/Class/_Util.pm +++ b/lib/DBIx/Class/_Util.pm @@ -53,7 +53,7 @@ use Carp; use Scalar::Util qw(refaddr weaken); use base 'Exporter'; -our @EXPORT_OK = qw(sigwarn_silencer modver_gt_or_eq fail_on_internal_wantarray); +our @EXPORT_OK = qw(sigwarn_silencer modver_gt_or_eq fail_on_internal_wantarray refcount); sub sigwarn_silencer { my $pattern = shift; @@ -65,6 +65,15 @@ sub sigwarn_silencer { return sub { &$orig_sig_warn unless $_[0] =~ $pattern }; } +sub refcount { + croak "Expecting a reference" if ! length ref $_[0]; + + require B; + # No tempvars - must operate on $_[0], otherwise the pad + # will count as an extra ref + B::svref_2object($_[0])->REFCNT; +} + sub modver_gt_or_eq { my ($mod, $ver) = @_;