Package: romeo
Severity: normal
Tags: patch

When building 'romeo' on amd64 with gcc-4.0,
I get the following error:

assemble.c:581: error: invalid lvalue in assignment
assemble.c: In function 'MergeIfAdjacent':
assemble.c:645: error: invalid lvalue in assignment
assemble.c:647: error: invalid lvalue in assignment
assemble.c:649: error: invalid lvalue in assignment
assemble.c: In function 'ROMfree':
assemble.c:710: error: invalid lvalue in assignment
assemble.c:720: error: invalid lvalue in assignment
assemble.c:744: error: invalid lvalue in assignment
assemble.c:745: error: invalid lvalue in assignment
assemble.c: In function 'CompareTypeCtor':
assemble.c:1420: warning: pointer targets in passing argument 1 of 'strncmp' 
differ in signedness
assemble.c:1420: warning: pointer targets in passing argument 2 of 'strncmp' 
differ in signedness
assemble.c: In function 'SetSystem':
assemble.c:1504: warning: pointer targets in initialization differ in signedness
assemble.c:1597: warning: pointer targets in passing argument 1 of 'strlen' 
differ in signedness
assemble.c:1606: warning: pointer targets in passing argument 1 of 'strlen' 
differ in signedness
make[1]: *** [assemble.o] Error 1
make[1]: Leaving directory `/romeo-0.5.0'
make: *** [build-stamp] Error 2

With the attached patch 'romeo' can be compiled
on amd64 using gcc-4.0.

Regards
Andreas Jochens

diff -urN ../tmp-orig/romeo-0.5.0/MemoryPrv.h ./MemoryPrv.h
--- ../tmp-orig/romeo-0.5.0/MemoryPrv.h 2001-03-17 02:27:51.000000000 +0100
+++ ./MemoryPrv.h       2005-03-22 21:26:00.407687297 +0100
@@ -311,6 +311,11 @@
 #define        memUHeapSize(p,ver)             \
        (ver>2 ? ((MemHeapHeaderPtr)p)->size : (ver>1 ? 
((Mem2HeapHeaderPtr)p)->size : ((Mem1HeapHeaderPtr)p)->size))
        
+#define        memUHeapSizeSet(p,ver,Size)             \
+       if (ver>2)      ((MemHeapHeaderPtr )p)->size = Size; \
+        else if (ver>1) ((Mem2HeapHeaderPtr)p)->size = Size; \
+        else            ((Mem1HeapHeaderPtr)p)->size = Size
+       
 #define        memUHeapFlags(p)                \
        (((MemHeapHeaderPtr)p)->flags)
        
@@ -340,6 +345,10 @@
 #define        memUChunkSize(p,ver)            \
        (ver>1 ? ((MemChunkHeaderPtr)p)->size : ((Mem1ChunkHeaderPtr)p)->size)
        
+#define        memUChunkSizeSet(p,ver,Size)            \
+       if (ver>1) ((MemChunkHeaderPtr)p)->size = Size; \
+       else       ((Mem1ChunkHeaderPtr)p)->size = Size
+       
 #define        memUChunkFlags(p,ver)           \
        (ver>1 ? memChunkFlags(p)  : ((Mem1ChunkHeaderPtr)p)->flags & 0xF0)
        
@@ -355,6 +364,10 @@
 #define        memUChunkHOffset(p,ver)         \
        (ver>1 ? ((MemChunkHeaderPtr)p)->hOffset  : 
((Mem1ChunkHeaderPtr)p)->hOffset)
 
+#define        memUChunkHOffsetSet(p,ver,Offset)               \
+       if (ver>1)      ((MemChunkHeaderPtr )p)->hOffset = Offset; \
+       else            ((Mem1ChunkHeaderPtr)p)->hOffset = Offset
+       
 
 
 
diff -urN ../tmp-orig/romeo-0.5.0/assemble.c ./assemble.c
--- ../tmp-orig/romeo-0.5.0/assemble.c  2001-03-17 02:27:57.000000000 +0100
+++ ./assemble.c        2005-03-22 21:27:31.906082885 +0100
@@ -61,7 +61,7 @@
        // Initialize this entire heap to 0.
        memset (hdr, 0, size);  //memUSizeOfHeapHeader(ver));
        
-       memUHeapSize (hdr, ver) = size;
+       memUHeapSizeSet(hdr, ver, size);
        
        memUHeapFlags(hdr) |= memHeapFlagReadOnly;
        switch (ver)
@@ -87,7 +87,7 @@
                                                 memUSizeOfHeapTerminator(ver));
        if (ver > 2)
        {
-               memUChunkHOffset(pChunk, chunkVer) = memUChunkSize(pChunk, 
chunkVer) >> 1;
+               memUChunkHOffsetSet(pChunk, chunkVer, memUChunkSize(pChunk, 
chunkVer) >> 1);
        }
 }
 
@@ -556,8 +556,8 @@
        {
                // Only update the hOffset (pointer to next free chunk) if
                // the hOffset of the old free chunk was set.
-               memUChunkHOffset(newFree, ver) = memUChunkHOffset(oldFree, ver) 
-
-                                                ((roundedSize + 
memUSizeOfChunkHeader(ver)) >>1);
+               memUChunkHOffsetSet(newFree, ver, memUChunkHOffset(oldFree, 
ver) -
+                                                ((roundedSize + 
memUSizeOfChunkHeader(ver)) >>1));
        }
 
 
@@ -576,9 +576,9 @@
        {
                // The previous free chunk now needs to point to the new free 
chunk.
                if (newsize)
-                       memUChunkHOffset(prevFree, ver) = ((UInt32)newFree - 
(UInt32)prevFree) >> 1;
+                       memUChunkHOffsetSet(prevFree, ver, ((UInt32)newFree - 
(UInt32)prevFree) >> 1);
                else
-                       memUChunkHOffset(prevFree, ver) += 
memUChunkHOffset(oldFree,ver);
+                       memUChunkHOffsetSet(prevFree, ver, 
memUChunkHOffset(prevFree, ver) + memUChunkHOffset(oldFree,ver));
        }
 
 
@@ -642,11 +642,11 @@
        {
                /* Free, contiguous and neither are terminators */
                if (memUChunkHOffset(pSecond,ver) != 0)
-                       memUChunkHOffset(pFirst,ver) += 
memUChunkHOffset(pSecond,ver);
+                       memUChunkHOffsetSet(pFirst,ver, 
memUChunkHOffset(pFirst,ver) + memUChunkHOffset(pSecond,ver));
                else
-                       memUChunkHOffset(pFirst,ver) = 0;
+                       memUChunkHOffsetSet(pFirst,ver, 0);
 
-               memUChunkSize(pFirst,ver) += memUChunkSize(pSecond,ver);
+               memUChunkSizeSet(pFirst,ver,memUChunkSize(pFirst,ver) + 
memUChunkSize(pSecond,ver));
 
                return (1);
        }
@@ -706,18 +706,18 @@
        {
                // This new free chunk will be the first one on the free list.
                if (pFreeChunk)
-                       memUChunkHOffset(pChunk,chunkVer) = ((UInt32)pFreeChunk 
- (UInt32)pChunk)
-                                                                               
                                                                        >> 1;
+                       memUChunkHOffsetSet(pChunk,chunkVer,((UInt32)pFreeChunk 
- (UInt32)pChunk)
+                                                                               
                                                                        >> 1);
 
                if (heapVer > 2)
                {
                        if (! pFreeChunk)
                                // In version 3 and above, the final free chunk 
points
                                // to the heap terminator.
-                               memUChunkHOffset(pChunk,chunkVer) = 
((UInt32)pHeap +
+                               memUChunkHOffsetSet(pChunk,chunkVer, 
((UInt32)pHeap +
                                                                     
memUHeapSize(pHeap, heapVer) -
                                                                                
                         memUSizeOfHeapTerminator(chunkVer) -
-                                                                               
                         (UInt32)pChunk) >> 1;
+                                                                               
                         (UInt32)pChunk) >> 1);
 
                        pHeap->header.ver3.firstFreeChunkOffset = 
((UInt32)pChunk - (UInt32)pHeap)>>1;
                }
@@ -741,8 +741,8 @@
                        hOffset = 
((UInt32)memUChunkNextFree(pFreeChunk,chunkVer) - (UInt32)pChunk)
                                                                                
        >> 1;
 
-               memUChunkHOffset(pChunk, chunkVer)    = hOffset;
-               memUChunkHOffset(pFreeChunk,chunkVer) = ((UInt32)pChunk - 
(UInt32)pFreeChunk)>>1;
+               memUChunkHOffsetSet(pChunk, chunkVer, hOffset);
+               memUChunkHOffsetSet(pFreeChunk,chunkVer, ((UInt32)pChunk - 
(UInt32)pFreeChunk)>>1);
        }
 
        MergeIfAdjacent(pChunk, memUChunkNextFree(pChunk,chunkVer), chunkVer);


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to