Skip to content

Commit

Permalink
grep: fix logic for empty patterns (#826)
Browse files Browse the repository at this point in the history
* Checking length of $pattern is unreliable because it is valid for a pattern to have zero-length (meaning match-all)
* I found this when testing the -f option but the logic applies to other usages of grep

%md5sum a.c
c9fd7ff4cb5b01981a2a362f82f44c89  a.c
%perl grep -F '' a.c | md5sum 
c9fd7ff4cb5b01981a2a362f82f44c89  -
%printf "\n" > pat0 && perl grep -f pat0 a.c | md5sum 
c9fd7ff4cb5b01981a2a362f82f44c89  -
%perl grep -e '' a.c | md5sum 
c9fd7ff4cb5b01981a2a362f82f44c89  -
  • Loading branch information
mknos authored Nov 19, 2024
1 parent a70b742 commit 36ffa5f
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion bin/grep
Original file line number Diff line number Diff line change
Expand Up @@ -269,7 +269,7 @@ sub parse_args {
if ($opt_f && scalar(@patterns) == 0) { # empty -f file allowed
exit EX_NOMATCH;
}
unless (length $pattern) {
unless (@patterns) {
$pattern = shift @ARGV;
usage() unless defined $pattern;
push @patterns, $pattern;
Expand Down

0 comments on commit 36ffa5f

Please sign in to comment.