X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=src%2Fld65%2Ffragment.c;h=3a9e13c7365351609f64259f5f58a74b33efb7e3;hb=35e1184901ca38bdb2e56d154ed3b71f6096eacc;hp=991ed3565f982de80c5fa62b8757664d7644dfe8;hpb=518220f9cf7dabb3703d4067cdb5f777cee7d697;p=cc65 diff --git a/src/ld65/fragment.c b/src/ld65/fragment.c index 991ed3565..3a9e13c73 100644 --- a/src/ld65/fragment.c +++ b/src/ld65/fragment.c @@ -6,10 +6,10 @@ /* */ /* */ /* */ -/* (C) 1998-2000 Ullrich von Bassewitz */ -/* Wacholderweg 14 */ -/* D-70597 Stuttgart */ -/* EMail: uz@musoftware.de */ +/* (C) 1998-2011, Ullrich von Bassewitz */ +/* Roemerstrasse 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ /* */ /* */ /* This software is provided 'as-is', without any expressed or implied */ @@ -34,11 +34,14 @@ /* common */ +#include "fragdefs.h" #include "xmalloc.h" /* ld65 */ -#include "segments.h" +#include "error.h" #include "fragment.h" +#include "objdata.h" +#include "segments.h" @@ -48,19 +51,30 @@ -Fragment* NewFragment (unsigned char Type, unsigned long Size, Section* S) +Fragment* NewFragment (unsigned char Type, unsigned Size, Section* S) /* Create a new fragment and insert it into the section S */ { + Fragment* F; + + /* Calculate the size of the memory block. LitBuf is only needed if the + * fragment contains literal data. + */ + unsigned FragSize = sizeof (Fragment) - 1; + if (Type == FRAG_LITERAL) { + FragSize += Size; + } + /* Allocate memory */ - Fragment* F = xmalloc (sizeof (Fragment) - 1 + Size); /* Portable? */ + F = xmalloc (FragSize); /* Initialize the data */ - F->Next = 0; - F->Obj = 0; - F->Size = Size; - F->Expr = 0; - InitFilePos (&F->Pos); - F->Type = Type; + F->Next = 0; + F->Obj = 0; + F->Sec = S; + F->Size = Size; + F->Expr = 0; + F->LineInfos = EmptyCollection; + F->Type = Type; /* Insert the code fragment into the section */ if (S->FragRoot == 0) {