Sorry couldn't resist setting that as a subject.

Anyway in obscure_msg() in libbb/obscure.c  we have a few lines of code
that read:

      if (!++p) {
              break; /* move past the matched char if possible */
      }

Now since p is a pointer the condition !++p is only going to be true in the
rare case of the pointer wrapping around the top of memory.  I think the
original author probably intended !*++p for this conditon.

Since strchr() the core of the loop where this occurs is well behaived when
passed a zero length string we can drop the test and move the increment to
an earlier usage of the pointer.

Saves 4 bytes on my ARM compiler.


Signed-off-by: Bob Dunlop <[email protected]>

$ diff -Naur busybox-1.17.1{-orig,}/libbb/obscure.c
--- busybox-1.17.1-orig/libbb/obscure.c 2010-07-06 03:25:54.000000000 +0100
+++ busybox-1.17.1/libbb/obscure.c      2010-08-17 12:14:35.000000000 +0100
@@ -130,13 +130,10 @@
                p = new_p;
                while (1) {
                        p = strchr(p, new_p[i]);
-                       if (p == NULL) {
+                       if (p++ == NULL) {
                                break;
                        }
                        c++;
-                       if (!++p) {
-                               break; /* move past the matched char if 
possible */
-                       }
                }
 
                if (c >= (length / 2)) {

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

Reply via email to