Michael Witten <mfwitten@xxxxxxxxx> writes: > This should make things a little more robust in terms of user input; > before, even the program got it wrong by outputting a line with only > "GIT:", which was left in place as a header, because there would be > no following space character. An alternative could be to add an extra space after the "GIT:" on the lines the compose template generated by this program, but people can set their editors to strip trailing whitespaces, so I think yours is a better approach. I suspect this patch comes from your own experience of getting bitten by this once, perhaps? > Also, I cleaned up get_patch_subject(). Which is a bit iffy. It does not belong to the primary topic of the patch to begin with, so it shouldn't be in here even if it weren't iffy. > diff --git a/git-send-email.perl b/git-send-email.perl > index 63d6063..098c620 100755 > --- a/git-send-email.perl > +++ b/git-send-email.perl > @@ -505,15 +505,16 @@ if (@files) { > } > > sub get_patch_subject($) { > - my $fn = shift; > - open (my $fh, '<', $fn); > - while (my $line = <$fh>) { > - next unless ($line =~ /^Subject: (.*)$/); > - close $fh; > - return "GIT: $1\n"; > + > + my $patch = shift; > + open (my $fh, '<', $patch); > + > + while (<$fh>) { > + next unless (/^Subject: (.*)$/); > + return $1; > } > - close $fh; > - die "No subject line in $fn ?"; > + > + die "'Subject:' line expected in '$patch'"; > } Because "while (<>)" does not localize $_, you are clobbering it in the caller's context. I do not know if any of the the existing callers cares, but it is a change in behaviour. $ cat >/var/tmp/j.perl <<\EOF #!/usr/bin/perl -w use strict; sub foo($) { my $name = shift; open my $fh, "<$name"; while (my $line = <$fh>) { chomp $line; close $fh; return $line; } close $fh; return undef; } sub bar($) { my $name = shift; open my $fh, "<$name"; while (<$fh>) { chomp; close $fh; return $_; } close $fh; return undef; } $_ = 'original'; foo($0); print "after running foo: $_\n"; $_ = 'original'; bar($0); print "after running bar: $_\n"; EOF $ perl /var/tmp/j.perl after running foo: original after running bar: #!/usr/bin/perl -w $ exit -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html