Re: [PATCH] Git.pm: Fix internal git_command_bidi_pipe() users
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Aug 4, 2008, 08:37 UTC
- Message-ID
- <7vhca12n2l.fsf@gitster.siamese.dyndns.org>
- In-Reply-To
- <20080804082117.GI10151@machine.or.cz>
Petr Baudis <pasky@suse.cz> writes:
Show 25 quoted lines
> On Mon, Aug 04, 2008 at 01:05:56AM -0700, Junio C Hamano wrote: >> Petr Baudis <pasky@suse.cz> writes: >> >> > The hash_and_insert_object() and cat_blob() helpers were using >> > an incorrect slice-from-ref Perl syntax. This patch fixes that up >> > in the _close_*() helpers and make the _open_*() helpers use the >> > same syntax for consistnecy. >> > >> > Signed-off-by: Petr Baudis <pasky@suse.cz> >> > --- >> > >> > Wow, the command_bidi_pipe API really is dirty. Of course, it is >> > my fault as anyone's since I didn't get around to review the patches >> > introducing it. >> >> Sorry, delete is still broken with your patch, isn't it? > > Oh, right - I forgot that one and it didn't occur to me to test this > part. > >> The earlier patch from Abhijit Menon-Sen does this properly for >> close_hash_and_insert and close_cat_blob, which I've queued already. > > Abhijit, can you please tag your Git.pm patches so that I actually have > a chance to see and review it?
It is $gmane/91316, Message-ID: <20080804050247.GA13539@toroid.org>
After queueing it, I actually had to revert it, because it seems to break git-svn (t9106-git-svn-commit-diff-clobber.sh, test #8), and I am about to go to bed. If you did not see the same breakage with your patch that does not "fix" delete, it could be that the git-svn uses some of the resources that are released by the delete actually doing what it is asked to do.
---
At 2008-08-04 12:49:27 +0800, rctay89@gmail.com wrote:
>
> $self->{@vars} evaluates to undef. i can't find any mention of using
> arrays to dereference objects in the manual and elsewhere; is this a
> mistake?Yes, @vars would be interpreted in scalar context, which certainly isn't the intended effect.
-- ams
perl/Git.pm | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/perl/Git.pm b/perl/Git.pm index 087d3d0..2ef437f 100644 --- a/perl/Git.pm +++ b/perl/Git.pm @@ -839,8 +839,8 @@ sub _close_hash_and_insert_object { my @vars = map { 'hash_object_' . $_ } qw(pid in out ctx); - command_close_bidi_pipe($self->{@vars}); - delete $self->{@vars}; + command_close_bidi_pipe(@$self{@vars}); + delete @$self{@vars}; } =item cat_blob ( SHA1, FILEHANDLE ) @@ -928,8 +928,8 @@ sub _close_cat_blob { my @vars = map { 'cat_blob_' . $_ } qw(pid in out ctx); - command_close_bidi_pipe($self->{@vars}); - delete $self->{@vars}; + command_close_bidi_pipe(@$self{@vars}); + delete @$self{@vars}; } =back
-- 1.6.0.rc0.43.g2aa74