On Wed, Aug 20, 2014 at 5:01 AM, Peter Maydell <peter.mayd...@linaro.org> wrote:
> On 19 August 2014 11:43, Paolo Bonzini <pbonz...@redhat.com> wrote:
>> From: Peter Crosthwaite <peter.crosthwa...@xilinx.com>
>>
>> Rather than having the name as separate state. This prepares support
>> for creating a MemoryRegion dynamically (i.e. without
>> memory_region_init() and friends) and the MemoryRegion still getting
>> a usable name.
>> @@ -1310,7 +1308,7 @@ uint64_t memory_region_size(MemoryRegion *mr)
>>
>>  const char *memory_region_name(const MemoryRegion *mr)
>>  {
>> -    return mr->name;
>> +    return object_get_canonical_path_component(OBJECT(mr));
>>  }
>
> This doesn't look right. It changes the semantics of this function
> from "returns a string which you don't own and can't change
> but don't need to free" to "returns a copy of a string which you
> have to free with g_free() when you're done". Unsurprisingly,
> the callsites aren't expecting this and we leak the string all
> over the place.
>
> I think we need to revert this (commit b0225c2c0d8) until
> both the Xen callsites are fixed and the leak issue is
> dealt with.
>

Have half a plan on the leak issue. With
object_get_canonical_path_component() being used increasing as a "get
me the already set, name of this object", I think it's better to just
change to API to return const and remove the free burden from all call
sites completely. If call sites really want a fresh copy they can take
one themselves. Patch on list imminently.

Regards,
Peter

> thanks
> -- PMM
>

Reply via email to