Skip to content

Commit d2f07b7

Browse files
mcaylandbonzini
authored andcommitted
softmmu/ioport.c: allocate MemoryRegionPortioList ports on the heap
In order to facilitate a conversion of MemoryRegionPortioList to a QOM object move the allocation of MemoryRegionPortioList ports to the heap instead of using a variable-length member at the end of the MemoryRegionPortioList structure. Signed-off-by: Mark Cave-Ayland <[email protected]> Reviewed-by: Philippe Mathieu-Daudé <[email protected]> Message-Id: <[email protected]> Signed-off-by: Paolo Bonzini <[email protected]>
1 parent 6301460 commit d2f07b7

File tree

1 file changed

+4
-3
lines changed

1 file changed

+4
-3
lines changed

softmmu/ioport.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
typedef struct MemoryRegionPortioList {
3636
MemoryRegion mr;
3737
void *portio_opaque;
38-
MemoryRegionPortio ports[];
38+
MemoryRegionPortio *ports;
3939
} MemoryRegionPortioList;
4040

4141
static uint64_t unassigned_io_read(void *opaque, hwaddr addr, unsigned size)
@@ -147,6 +147,7 @@ void portio_list_destroy(PortioList *piolist)
147147
for (i = 0; i < piolist->nr; ++i) {
148148
mrpio = container_of(piolist->regions[i], MemoryRegionPortioList, mr);
149149
object_unparent(OBJECT(&mrpio->mr));
150+
g_free(mrpio->ports);
150151
g_free(mrpio);
151152
}
152153
g_free(piolist->regions);
@@ -227,9 +228,9 @@ static void portio_list_add_1(PortioList *piolist,
227228
unsigned i;
228229

229230
/* Copy the sub-list and null-terminate it. */
230-
mrpio = g_malloc0(sizeof(MemoryRegionPortioList) +
231-
sizeof(MemoryRegionPortio) * (count + 1));
231+
mrpio = g_malloc0(sizeof(MemoryRegionPortioList));
232232
mrpio->portio_opaque = piolist->opaque;
233+
mrpio->ports = g_malloc0(sizeof(MemoryRegionPortio) * (count + 1));
233234
memcpy(mrpio->ports, pio_init, sizeof(MemoryRegionPortio) * count);
234235
memset(mrpio->ports + count, 0, sizeof(MemoryRegionPortio));
235236

0 commit comments

Comments
 (0)