URI:
       tlib9: gcc-4.2 bug in sprint - plan9port - [fork] Plan 9 from user space
  HTML git clone git://src.adamsgaard.dk/plan9port
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
   DIR commit 34167aa6b0d7d53016b8574b4fe1fac764ddf615
   DIR parent b32d9d9c2e07681450a7ea1801b07e5727fa39e2
  HTML Author: Russ Cox <rsc@swtch.com>
       Date:   Mon,  3 Mar 2008 23:37:12 -0500
       
       lib9: gcc-4.2 bug in sprint
       
       Diffstat:
         M src/lib9/fmt/sprint.c               |       5 ++++-
       
       1 file changed, 4 insertions(+), 1 deletion(-)
       ---
   DIR diff --git a/src/lib9/fmt/sprint.c b/src/lib9/fmt/sprint.c
       t@@ -16,8 +16,11 @@ sprint(char *buf, char *fmt, ...)
                /*
                 * on PowerPC, the stack is near the top of memory, so
                 * we must be sure not to overflow a 32-bit pointer.
       +         *
       +         * careful!  gcc-4.2 assumes buf+len < buf can never be true and
       +         * optimizes the test away.  casting to uintptr works around this bug.
                 */
       -        if(buf+len < buf)
       +        if((uintptr)buf+len < (uintptr)buf)
                        len = -(uintptr)buf-1;
        
                va_start(args, fmt);