Subject: Re: bug#52509: 27.2; `call-process-region' won't accept nil as START argument

From: Stephen Berman <[email-masked]>
Date: Wed, 15 Dec 2021 15:09:08 +0100

On Wed, 15 Dec 2021 18:59:59 +0800 LdBeth <[email-masked]> wrote:

> The docstring of `call-process-region' writes:
>
>   START and END are normally buffer positions specifying the part of the
>   buffer to send to the process.
>   If START is nil, that means to use the entire buffer contents; END is
>   ignored.
>   If START is a string, then send that string to the process
>   instead of any buffer contents; END is ignored.
>   The remaining arguments are optional.
>   Delete the text if fourth arg DELETE is non-nil.
>
> To reproduce this bug, define these functions:
>
> ```
> (defun this-works ()
>   (call-process-region (point-min) (point-max) "/bin/cat"
>                        t t))
>
> (defun this-wont ()
>   (call-process-region nil 0 "/bin/cat"
>                        t t))
> ```
>
> and use `M-:` to execute these two function. The second one would give
> the error trace:
>
> ```
> Debugger entered--Lisp error: (wrong-type-argument integer-or-marker-p nil)
>   call-process-region(nil 0 "/bin/cat" t t)
>   this-wont()
>   eval((this-wont) t)
>   eval-expression((this-wont) nil nil 127)
>   funcall-interactively(eval-expression (this-wont) nil nil 127)
>   call-interactively(eval-expression nil nil)
>   command-execute(eval-expression)
> ```
>
> While if my understanding to the docstring is right, these two should
> give identical effect.
>
> The Emacs version I'm using is 27.2, however I suspect this can also
> be reproduced in master branch.

Nope:

commit 42306747d8dece897805e89c36c3741bfb8d5e7c
Author:     Philipp Stephani <[email-masked]>
Commit:     Philipp Stephani <[email-masked]>
CommitDate: Sun Apr 12 19:04:11 2020 +0200

    Fix error in 'call-process-region' when START is nil (Bug#40576)

Steve Berman