Skip to content

Commit 63b4ccb

Browse files
committed
Merge pull request #246 from uecasm/patch-1
Verify memoized files can be reloaded before using them
2 parents b4a58f8 + e47587c commit 63b4ccb

File tree

1 file changed

+11
-1
lines changed

1 file changed

+11
-1
lines changed

perl/Git/SVN.pm

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1658,7 +1658,17 @@ sub tie_for_persistent_memoization {
16581658
if ($memo_backend > 0) {
16591659
tie %$hash => 'Git::SVN::Memoize::YAML', "$path.yaml";
16601660
} else {
1661-
tie %$hash => 'Memoize::Storable', "$path.db", 'nstore';
1661+
# first verify that any existing file can actually be loaded
1662+
# (it may have been saved by an incompatible version)
1663+
my $db = "$path.db";
1664+
if (-e $db) {
1665+
use Storable qw(retrieve);
1666+
1667+
if (!eval { retrieve($db); 1 }) {
1668+
unlink $db or die "unlink $db failed: $!";
1669+
}
1670+
}
1671+
tie %$hash => 'Memoize::Storable', $db, 'nstore';
16621672
}
16631673
}
16641674

0 commit comments

Comments
 (0)