Il 26/08/2014 05:10, Peter Crosthwaite ha scritto: > To support name retrieval of MemoryRegions that were created > dynamically (that is, not via memory_region_init and friends). We > cache the name in MemoryRegion's state as > object_get_canonical_path_component mallocs the returned value > so it's not suitable for direct return to callers. Memory already > frees the name field, so this will be garbage collected along with > the MR object. > > Signed-off-by: Peter Crosthwaite <peter.crosthwa...@xilinx.com> > --- > > memory.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/memory.c b/memory.c > index 42317a2..fc16e5f 100644 > --- a/memory.c > +++ b/memory.c > @@ -914,7 +914,6 @@ void memory_region_init(MemoryRegion *mr, > if (size == UINT64_MAX) { > mr->size = int128_2_64(); > } > - mr->name = g_strdup(name);
This causes a bunch of [0] to appear in the "info mtree" output. They're a bit ugly, so I'm removing this line for now. Paolo > if (name) { > object_property_add_child_array(owner, name, OBJECT(mr)); > @@ -1309,6 +1308,10 @@ uint64_t memory_region_size(MemoryRegion *mr) > > const char *memory_region_name(const MemoryRegion *mr) > { > + if (!mr->name) { > + ((MemoryRegion *)mr)->name = > + object_get_canonical_path_component(OBJECT(mr)); > + } > return mr->name; > } > >