X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBM%2FDeep%2FSector%2FDBI%2FReference.pm;fp=lib%2FDBM%2FDeep%2FSector%2FDBI%2FReference.pm;h=15584ddd958b0cf9f1d5c3338fed257911f6168e;hb=e73f12ce9c4e8bdc89f1bc84d8f2a101bdb21518;hp=290bec1e78b69d24675444ff99921d5b950ecd04;hpb=8385c429c0fb14033edd484e9daf138cd799c432;p=dbsrgits%2FDBM-Deep.git diff --git a/lib/DBM/Deep/Sector/DBI/Reference.pm b/lib/DBM/Deep/Sector/DBI/Reference.pm index 290bec1..15584dd 100644 --- a/lib/DBM/Deep/Sector/DBI/Reference.pm +++ b/lib/DBM/Deep/Sector/DBI/Reference.pm @@ -112,27 +112,28 @@ sub data { my ($args) = @_; $args ||= {}; - my $obj; - unless ( $obj = $self->engine->cache->{ $self->offset } ) { - $obj = DBM::Deep->new({ + my $engine = $self->engine; +# if ( !exists $engine->cache->{ $self->offset } ) { + my $obj = DBM::Deep->new({ type => $self->type, base_offset => $self->offset, - storage => $self->engine->storage, - engine => $self->engine, + storage => $engine->storage, + engine => $engine, }); - if ( $self->engine->storage->{autobless} ) { +# $engine->cache->{$self->offset} = $obj; +# } +# my $obj = $engine->cache->{$self->offset}; + + # We're not exporting, so just return. + unless ( $args->{export} ) { + if ( $engine->storage->{autobless} ) { my $classname = $self->get_classname; if ( defined $classname ) { bless $obj, $classname; } } - $self->engine->cache->{$self->offset} = $obj; - } - - # We're not exporting, so just return. - unless ( $args->{export} ) { return $obj; } @@ -201,5 +202,18 @@ sub write_refcount { ); } +sub clear { + my $self = shift; + + DBM::Deep->new({ + type => $self->type, + base_offset => $self->offset, + storage => $self->engine->storage, + engine => $self->engine, + })->_clear; + + return; +} + 1; __END__