--text (-a) is documented to change only the output, not grep's exit status. Yet, it does change the exit status here:
$ printf "a\0b\n" | LC_ALL=C src/grep -la a.b; echo $? (standard input) 0 $ printf "a\0b\n" | LC_ALL=C src/grep -l a.b; echo $? 1 Noted by Andreas Schwab in https://bugs.gnu.org/20080.