ref-filter: move get_head_description() from branch.c
[gitweb.git] / perl / Git / SVN.pm
index 499e84b6d6787fe70332e85dc887f2fa14a18ea7..711d2687a3005091d80fc964e5fd92aba6167b38 100644 (file)
@@ -1663,7 +1663,17 @@ sub tie_for_persistent_memoization {
        if ($memo_backend > 0) {
                tie %$hash => 'Git::SVN::Memoize::YAML', "$path.yaml";
        } else {
-               tie %$hash => 'Memoize::Storable', "$path.db", 'nstore';
+               # first verify that any existing file can actually be loaded
+               # (it may have been saved by an incompatible version)
+               my $db = "$path.db";
+               if (-e $db) {
+                       use Storable qw(retrieve);
+
+                       if (!eval { retrieve($db); 1 }) {
+                               unlink $db or die "unlink $db failed: $!";
+                       }
+               }
+               tie %$hash => 'Memoize::Storable', $db, 'nstore';
        }
 }