[git commit] ash: fix still-broken new mail detection

Denys Vlasenko vda.linux at googlemail.com
Mon Apr 3 12:41:01 UTC 2023


commit: https://git.busybox.net/busybox/commit/?id=7ababc3e3cd44cb51ad1b0183f7fe30df0fb3cbf
branch: https://git.busybox.net/busybox/commit/?id=refs/heads/master

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 55c0acc16..f057b8963 100644
--- a/shell/ash.c
+++ b/shell/ash.c
@@ -11265,8 +11265,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)
@@ -11285,7 +11285,7 @@ chkmail(void)
 		int len;
 
 		len = padvance_magic(&mpath, nullstr, 2);
-		if (!len)
+		if (len < 0)
 			break;
 		p = stackblock();
 		if (*p == '\0')
@@ -11306,8 +11306,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