t64-bit fixes from lucho - plan9port - [fork] Plan 9 from user space
 (HTM) git clone git://src.adamsgaard.dk/plan9port
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 2634795b5f0053bc0ff08e5d7bbc0eda8efea061
 (DIR) parent 93aa30a8df668b3ad5806c417acb65d2a4663178
 (HTM) Author: rsc <devnull@localhost>
       Date:   Fri, 14 Jan 2005 03:33:11 +0000
       
       64-bit fixes from lucho
       
       Diffstat:
         M src/libdraw/bytesperline.c          |       2 +-
         M src/libdraw/md-alloc.c              |      16 +++++++++-------
         M src/libdraw/md-defont.c             |       2 +-
         M src/libdraw/md-fillpoly.c           |       4 ++--
       
       4 files changed, 13 insertions(+), 11 deletions(-)
       ---
 (DIR) diff --git a/src/libdraw/bytesperline.c b/src/libdraw/bytesperline.c
       t@@ -24,7 +24,7 @@ unitsperline(Rectangle r, int d, int bitsperunit)
        int
        wordsperline(Rectangle r, int d)
        {
       -        return unitsperline(r, d, 8*sizeof(ulong));
       +        return unitsperline(r, d, 8*sizeof(u32int));
        }
        
        int
 (DIR) diff --git a/src/libdraw/md-alloc.c b/src/libdraw/md-alloc.c
       t@@ -19,7 +19,7 @@ memimagemove(void *from, void *to)
                md->base = to;
        
                /* if allocmemimage changes this must change too */
       -        md->bdata = (uchar*)&md->base[2];
       +        md->bdata = (uchar*)((ulong*)md->base+2);
        }
        
        Memimage*
       t@@ -71,6 +71,7 @@ _allocmemimage(Rectangle r, u32int chan)
        {
                int d;
                u32int l, nw;
       +        ulong *ul;
                Memdata *md;
                Memimage *i;
        
       t@@ -87,22 +88,23 @@ _allocmemimage(Rectangle r, u32int chan)
        
                md->ref = 1;
                /*
       -         * The first two words are the md and the callerpc.
       +         * The first two ulongs are the md and the callerpc.
                 * Then nw words of data.
                 * The final word lets the drawing routines be a little
                 * sloppy about reading past the end of the block.
                 */
       -        md->base = poolalloc(imagmem, (2+nw+1)*sizeof(u32int));
       +        md->base = poolalloc(imagmem, 2*sizeof(ulong)+(nw+1)*sizeof(u32int));
                if(md->base == nil){
                        free(md);
                        return nil;
                }
        
       -        md->base[0] = (u32int)md;
       -        md->base[1] = getcallerpc(&r);
       +        ul = (ulong*)md->base;
       +        ul[0] = (ulong)md;
       +        ul[1] = getcallerpc(&r);
        
                /* if this changes, memimagemove must change too */
       -        md->bdata = (uchar*)&md->base[2];
       +        md->bdata = (uchar*)(ul+2);
        
                md->allocd = 1;
        
       t@@ -135,7 +137,7 @@ _freememimage(Memimage *i)
        u32int*
        wordaddr(Memimage *i, Point p)
        {
       -        return (u32int*) ((u32int)byteaddr(i, p) & ~(sizeof(u32int)-1));
       +        return (u32int*) ((ulong)byteaddr(i, p) & ~(sizeof(u32int)-1));
        }
        
        uchar*
 (DIR) diff --git a/src/libdraw/md-defont.c b/src/libdraw/md-defont.c
       t@@ -21,7 +21,7 @@ getmemdefont(void)
                 * declared as char*, not u32int*.
                 */
                p = (char*)defontdata;
       -        n = (u32int)p & 3;
       +        n = (ulong)p & 3;
                if(n != 0){
                        memmove(p+(4-n), p, sizeofdefont-n);
                        p += 4-n;
 (DIR) diff --git a/src/libdraw/md-fillpoly.c b/src/libdraw/md-fillpoly.c
       t@@ -126,7 +126,7 @@ mod(long x, long y)
                long z;
        
                z = x%y;
       -        if((long)(((u32int)z)^((u32int)y)) > 0 || z == 0)
       +        if((long)(((ulong)z)^((ulong)y)) > 0 || z == 0)
                        return z;
                return z + y;
        }
       t@@ -134,7 +134,7 @@ mod(long x, long y)
        static long
        sdiv(long x, long y)
        {
       -        if((long)(((u32int)x)^((u32int)y)) >= 0 || x == 0)
       +        if((long)(((ulong)x)^((ulong)y)) >= 0 || x == 0)
                        return x/y;
        
                return (x+((y>>30)|1))/y-1;