On Thu, Jun 1, 2017 at 5:22 PM, Todd Zullinger <tmz@xxxxxxxxx> wrote: > Hi Jonathan, > > Jonathan Tan wrote: >> >> Thanks for the notification. Here's a patch to fix that. --- >> git-send-email.perl | 32 +++++++++++++++++--------------- >> t/t9001-send-email.sh | 8 ++++++++ 2 files changed, 25 insertions(+), 15 >> deletions(-) >> >> diff --git a/git-send-email.perl b/git-send-email.perl index >> f0417f64e..94c54dc5a 100755 --- a/git-send-email.perl +++ >> b/git-send-email.perl @@ -1755,21 +1755,23 @@ sub unique_email_list { sub >> validate_patch { my $fn = shift; >> >> - my $validate_hook = catfile(catdir($repo->repo_path(), 'hooks'), - >> 'sendemail-validate'); - my $hook_error; - if (-x $validate_hook) { >> - my $target = abs_path($fn); - # The hook needs a >> correct cwd and GIT_DIR. - my $cwd_save = cwd(); - >> chdir($repo->wc_path() or $repo->repo_path()) - or >> die("chdir: $!"); - local $ENV{"GIT_DIR"} = $repo->repo_path(); - >> $hook_error = "rejected by sendemail-validate hook" - if >> system($validate_hook, $target); - chdir($cwd_save) or die("chdir: >> $!"); - } - return $hook_error if $hook_error; + if ($repo) { + >> my $validate_hook = catfile(catdir($repo->repo_path(), 'hooks'), + >> 'sendemail-validate'); + my $hook_error; + if (-x >> $validate_hook) { + my $target = abs_path($fn); + >> # The hook needs a correct cwd and GIT_DIR. + my $cwd_save >> = cwd(); + chdir($repo->wc_path() or $repo->repo_path()) + >> or die("chdir: $!"); + local $ENV{"GIT_DIR"} = >> $repo->repo_path(); + $hook_error = "rejected by >> sendemail-validate hook" + if >> system($validate_hook, $target); + chdir($cwd_save) or >> die("chdir: $!"); + } + return $hook_error if >> $hook_error; + } > > > Would it be worth doing the $repo test when defining $validate_hook to avoid > a layer of indentation? Something like this (with whatever proper > wrapping/indentation is used for perl, if I have that wildly incorrect, of > course)? > This approach makes more sense to me, but either should fix the bug. The first approach might be more resilient against future changes though...? Thanks, Jake > -- >8 -- > diff --git i/git-send-email.perl w/git-send-email.perl > index f0417f64e7..e78a0a728a 100755 > --- i/git-send-email.perl > +++ w/git-send-email.perl > @@ -1755,8 +1755,9 @@ sub unique_email_list { > sub validate_patch { > my $fn = shift; > > - my $validate_hook = catfile(catdir($repo->repo_path(), 'hooks'), > - 'sendemail-validate'); > + my $validate_hook = $repo ? > + catfile(catdir($repo->repo_path(), 'hooks'), > + 'sendemail-validate') : ''; > my $hook_error; > if (-x $validate_hook) { > my $target = abs_path($fn); > > -- > Todd > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > I have to decide between two equally frightening options. If I wanted > to do that, I'd vote. > -- Duckman >