summaryrefslogtreecommitdiff
path: root/perl/Git/SVN/Fetcher.pm
diff options
context:
space:
mode:
authorLibravatar Junio C Hamano <gitster@pobox.com>2015-02-26 14:03:57 -0800
committerLibravatar Junio C Hamano <gitster@pobox.com>2015-02-26 14:03:57 -0800
commit28ed7b02dd726bcc5c8d3fc316c965a3c0f05c04 (patch)
tree89b62e09fe810cacfa218c4ca3b3bee2d4a90cb2 /perl/Git/SVN/Fetcher.pm
parentgit-svn: lazy load some modules (diff)
parentGit::SVN::*: avoid premature FileHandle closure (diff)
downloadtgif-28ed7b02dd726bcc5c8d3fc316c965a3c0f05c04.tar.xz
Merge branch 'svn-maint-fixes' into svn-fixes
* svn-maint-fixes: Git::SVN::*: avoid premature FileHandle closure git-svn: fix localtime=true on non-glibc environments
Diffstat (limited to 'perl/Git/SVN/Fetcher.pm')
-rw-r--r--perl/Git/SVN/Fetcher.pm8
1 files changed, 8 insertions, 0 deletions
diff --git a/perl/Git/SVN/Fetcher.pm b/perl/Git/SVN/Fetcher.pm
index 6b9c6e0138..d8c21ad915 100644
--- a/perl/Git/SVN/Fetcher.pm
+++ b/perl/Git/SVN/Fetcher.pm
@@ -321,6 +321,14 @@ sub apply_textdelta {
# (but $base does not,) so dup() it for reading in close_file
open my $dup, '<&', $fh or croak $!;
my $base = $::_repository->temp_acquire("git_blob_${$}_$suffix");
+ # close_file may call temp_acquire on 'svn_hash', but because of the
+ # call chain, if the temp_acquire call from close_file ends up being the
+ # call that first creates the 'svn_hash' temp file, then the FileHandle
+ # that's created as a result will end up in an SVN::Pool that we clear
+ # in SVN::Ra::gs_fetch_loop_common. Avoid that by making sure the
+ # 'svn_hash' FileHandle is already created before close_file is called.
+ my $tmp_fh = $::_repository->temp_acquire('svn_hash');
+ $::_repository->temp_release($tmp_fh, 1);
if ($fb->{blob}) {
my ($base_is_link, $size);