Re: [PATCH] am: fix condition check on fseek
- From
- Kristoffer Haugsbakk <kristofferhaugsbakk@fastmail.com>
- Date
- Sep 21, 2024, 19:52 UTC
- Message-ID
- <7601dcef-e256-4e20-bbd4-75955e5a45d5@app.fastmail.com>
- In-Reply-To
- <20240921150855.31574-1-RuffaloLavoisier@gmail.com>
On Sat, Sep 21, 2024, at 17:08, Ruffalo Lavoisier wrote:
Show 22 quoted lines
> if fseek() is success, return value is 0
>
> Signed-off-by: Ruffalo Lavoisier <RuffaloLavoisier@gmail.com>
> ---
> builtin/am.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/builtin/am.c b/builtin/am.c
> index d8875ad402..a7727fd4ea 100644
> --- a/builtin/am.c
> +++ b/builtin/am.c
> @@ -589,7 +589,7 @@ static int is_mail(FILE *fp)
> regex_t regex;
> int ret = 1;
>
> - if (fseek(fp, 0L, SEEK_SET))
> + if (!fseek(fp, 0L, SEEK_SET))
> die_errno(_("fseek failed"));
>
> if (regcomp(®ex, header_regex, REG_NOSUB | REG_EXTENDED))
> --
> 2.46.1I don’t get this change? The function returns false on success. true if it fails (not zero). You want the program to die if it returns non-zero.
It’s hard to wrap my head around… “false must mean “no errors” ”
If the original code has a bug then I don’t see how git-am(1) could work considering it presumably always checks ‘is_mail’.
-- Kristoffer