[git commit branch/1_36_stable] ash: fix still-broken new mail detection

Denys Vlasenko vda.linux at googlemail.com
Tue Apr 25 14:47:22 UTC 2023


commit: https://git.busybox.net/busybox/commit/?id=90f5f2a190bca489fac513a150ffab79c6f585b2
branch: https://git.busybox.net/busybox/commit/?id=refs/heads/1_36_stable

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 at googlemail.com>
---
 shell/ash.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/shell/ash.c b/shell/ash.c
index c15bce7ae..9344e4de1 100644
--- a/shell/ash.c
+++ b/shell/ash.c
@@ -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);
 }


More information about the busybox-cvs mailing list