ash: fix still-broken new mail detection

padvance() exit condition is return value < 0, not == 0.
After MAIL changing twice, the logic erroneously
concluded that "you have new mail".

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko 2023-04-03 14:31:18 +02:00
parent 07bc5de67b
commit 90f5f2a190

View File

@ -11264,8 +11264,8 @@ static smallint mail_var_path_changed;
/*
* Print appropriate message(s) if mail has arrived.
* If mail_var_path_changed is set,
* then the value of MAIL has mail_var_path_changed,
* so we just update the values.
* then the value of MAIL has changed,
* so we just update the hash value.
*/
static void
chkmail(void)
@ -11284,7 +11284,7 @@ chkmail(void)
int len;
len = padvance_magic(&mpath, nullstr, 2);
if (!len)
if (len < 0)
break;
p = stackblock();
if (*p == '\0')
@ -11305,8 +11305,8 @@ chkmail(void)
if (!mail_var_path_changed && mailtime_hash != new_hash) {
if (mailtime_hash != 0)
out2str("you have mail\n");
mailtime_hash = new_hash;
}
mailtime_hash = new_hash;
mail_var_path_changed = 0;
popstackmark(&smark);
}