diff --git a/src/dbginfo/dbginfo.c b/src/dbginfo/dbginfo.c index 14f0e29e4..a89954387 100644 --- a/src/dbginfo/dbginfo.c +++ b/src/dbginfo/dbginfo.c @@ -980,6 +980,26 @@ static void DBGPRINT(const char* format, ...) {} +/*****************************************************************************/ +/* Id lists */ +/*****************************************************************************/ + + + +static cc65_idlist* new_cc65_idlist (unsigned Count) +/* Allocate and return a new idlist with the given count. The count field in + * the list will already be set on return. + */ +{ + /* Allocate memory */ + cc65_idlist* L = xmalloc (sizeof (*L) - sizeof (L->ids[0]) + + Count * sizeof (L->ids[0])); + L->count = Count; + return L; +} + + + /*****************************************************************************/ /* File info */ /*****************************************************************************/ @@ -1023,7 +1043,7 @@ static cc65_sourceinfo* new_cc65_sourceinfo (unsigned Count) { cc65_sourceinfo* S = xmalloc (sizeof (*S) - sizeof (S->data[0]) + Count * sizeof (S->data[0])); - S->count = Count; + S->count = Count; return S; } diff --git a/src/dbginfo/dbginfo.h b/src/dbginfo/dbginfo.h index 5867c0a6a..030a6602f 100644 --- a/src/dbginfo/dbginfo.h +++ b/src/dbginfo/dbginfo.h @@ -61,6 +61,13 @@ typedef unsigned cc65_size; /* Used to store (65xx) sizes */ /* A value that is used to mark invalid ids */ #define CC65_INV_ID (~0U) +/* A structure that is used to store a list of ids */ +typedef struct cc65_idlist cc65_idlist; +struct cc65_idlist { + unsigned count; /* Number of elements */ + unsigned ids[1]; /* List of ids, number is dynamic */ +}; + /*****************************************************************************/