X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBM%2FDeep%2FEngine.pm;h=ddf16e4f751f2c0836971c5df5128fd29809985f;hb=15ba72cca3f518ab20883c61fbacfee07ff382ed;hp=7249fe7bfa950af4117fb94fa47f831e0526e5cb;hpb=21838116bc9b7cb890fa464ec0eaa907e3a260d3;p=dbsrgits%2FDBM-Deep.git diff --git a/lib/DBM/Deep/Engine.pm b/lib/DBM/Deep/Engine.pm index 7249fe7..ddf16e4 100644 --- a/lib/DBM/Deep/Engine.pm +++ b/lib/DBM/Deep/Engine.pm @@ -109,7 +109,7 @@ sub write_file_header { SIG_HEADER, pack('N', 1), # header version pack('N', 12), # header size - pack('N', 0), # file version + pack('N', 0), # currently running transaction IDs pack('S', $self->{long_size}), pack('A', $self->{long_pack}), pack('S', $self->{data_size}), @@ -138,20 +138,23 @@ sub read_file_header { ); unless ( $file_signature eq SIG_FILE ) { - $self->{fileobj}->close; + $self->_fileobj->close; $self->_throw_error( "Signature not found -- file is not a Deep DB" ); } unless ( $sig_header eq SIG_HEADER ) { - $self->{fileobj}->close; + $self->_fileobj->close; $self->_throw_error( "Old file version found." ); } my $buffer2; $bytes_read += read( $fh, $buffer2, $size ); - my ($file_version, @values) = unpack( 'N S A S A S', $buffer2 ); + my ($running_transactions, @values) = unpack( 'N S A S A S', $buffer2 ); + + $self->_fileobj->set_transaction_offset( 13 ); + if ( @values < 5 || grep { !defined } @values ) { - $self->{fileobj}->close; + $self->_fileobj->close; $self->_throw_error("Corrupted file - bad header"); }