On Wed, Sep 08, 2010 at 02:24:02PM +0200, Denys Vlasenko wrote:
> Please, do not convert it to for(). I like while().

Ok.

> This definitely looks wrong. You need to add {}s.

Whoops--missed that.  Here's an amended patch.

>>> Dan
From 012106fbd2fd5fb46f91195018305f9ed432e665 Mon Sep 17 00:00:00 2001
From: Dan Fandrich <[email protected]>
Date: Tue, 7 Sep 2010 23:38:28 -0700
Subject: [PATCH] Avoid side effects in putc(), which may be implemented as a macro

Signed-off-by: Dan Fandrich <[email protected]>
---
 coreutils/ls.c  |    3 ++-
 coreutils/tee.c |    8 ++++----
 shell/ash.c     |    9 ++++++---
 3 files changed, 12 insertions(+), 8 deletions(-)

diff --git a/coreutils/ls.c b/coreutils/ls.c
index cbfcfc7..2679551 100644
--- a/coreutils/ls.c
+++ b/coreutils/ls.c
@@ -573,7 +573,8 @@ static unsigned print_name(const char *name)
 			putchar('\\');
 			len++;
 		}
-		putchar(*name++);
+		putchar(*name);
+		++name;
 	}
 	putchar('"');
 	return len;
diff --git a/coreutils/tee.c b/coreutils/tee.c
index 8db9042..2e1e367 100644
--- a/coreutils/tee.c
+++ b/coreutils/tee.c
@@ -70,8 +70,8 @@ int tee_main(int argc, char **argv)
 	while ((c = safe_read(STDIN_FILENO, buf, sizeof(buf))) > 0) {
 		fp = files;
 		do
-			fwrite(buf, 1, c, *fp++);
-		while (*fp);
+			fwrite(buf, 1, c, *fp);
+		while (*++fp);
 	}
 	if (c < 0) {		/* Make sure read errors are signaled. */
 		retval = EXIT_FAILURE;
@@ -81,8 +81,8 @@ int tee_main(int argc, char **argv)
 	while ((c = getchar()) != EOF) {
 		fp = files;
 		do
-			putc(c, *fp++);
-		while (*fp);
+			putc(c, *fp);
+		while (*++fp);
 	}
 #endif
 
diff --git a/shell/ash.c b/shell/ash.c
index 70425b3..3d320d2 100644
--- a/shell/ash.c
+++ b/shell/ash.c
@@ -953,7 +953,8 @@ sharg(union node *arg, FILE *fp)
 	for (p = arg->narg.text; *p; p++) {
 		switch ((unsigned char)*p) {
 		case CTLESC:
-			putc(*++p, fp);
+			++p;
+			putc(*p, fp);
 			break;
 		case CTLVAR:
 			putc('$', fp);
@@ -962,8 +963,10 @@ sharg(union node *arg, FILE *fp)
 			if (subtype == VSLENGTH)
 				putc('#', fp);
 
-			while (*p != '=')
-				putc(*p++, fp);
+			while (*p != '=') {
+				putc(*p, fp);
+				++p;
+			}
 
 			if (subtype & VSNUL)
 				putc(':', fp);
-- 
1.5.3.2

_______________________________________________
busybox mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/busybox

Reply via email to