зеркало из https://github.com/microsoft/git.git
git-svn: write memoized data explicitly to avoid Storable bug
Apparently using the Storable module during global destruction is
unsafe - there is a bug which can cause segmentation faults:
http://rt.cpan.org/Public/Bug/Display.html?id=36087
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=482355
The persistent memoization support introduced in commit 8bff7c538
relied on global destruction to write cached data, which was leading
to segfaults in some Perl configurations. Calling Memoize::unmemoize
in the END block forces the cache writeout to be performed earlier,
thus avoiding the bug.
Signed-off-by: Sergey Vlasov <vsu@altlinux.ru>
Acked-by: Eric Wong <normalperson@yhbt.net>
This commit is contained in:
Родитель
24e7a5be37
Коммит
8ac3a66702
16
git-svn.perl
16
git-svn.perl
|
@ -3169,6 +3169,22 @@ sub has_no_changes {
|
|||
LIST_CACHE => 'FAULT',
|
||||
;
|
||||
}
|
||||
|
||||
sub unmemoize_svn_mergeinfo_functions {
|
||||
return if not $memoized;
|
||||
$memoized = 0;
|
||||
|
||||
Memoize::unmemoize 'lookup_svn_merge';
|
||||
Memoize::unmemoize 'check_cherry_pick';
|
||||
Memoize::unmemoize 'has_no_changes';
|
||||
}
|
||||
}
|
||||
|
||||
END {
|
||||
# Force cache writeout explicitly instead of waiting for
|
||||
# global destruction to avoid segfault in Storable:
|
||||
# http://rt.cpan.org/Public/Bug/Display.html?id=36087
|
||||
unmemoize_svn_mergeinfo_functions();
|
||||
}
|
||||
|
||||
sub parents_exclude {
|
||||
|
|
Загрузка…
Ссылка в новой задаче