Re: [PATCH v5 05/14] software node: clean up property_copy_string_array()

From: Dmitry Torokhov
Date: Wed Oct 16 2019 - 13:01:05 EST


On Wed, Oct 16, 2019 at 10:53:00AM +0300, Andy Shevchenko wrote:
> On Tue, Oct 15, 2019 at 11:12:11AM -0700, Dmitry Torokhov wrote:
> > On Tue, Oct 15, 2019 at 03:07:26PM +0300, Andy Shevchenko wrote:
> > > On Fri, Oct 11, 2019 at 04:07:12PM -0700, Dmitry Torokhov wrote:
> > > > Because property_copy_string_array() stores the newly allocated pointer in the
> > > > destination property, we have an awkward code in property_entry_copy_data()
> > > > where we fetch the new pointer from dst.
> > >
> > > I don't see a problem in this function.
> > >
> > > Rather 'awkward code' is a result of use property_set_pointer() which relies on
> > > data type.
> >
> > No, the awkwardness is that we set the pointer once in
> > property_copy_string_array(), then fetch it in
> > property_entry_copy_data() only to set it again via
> > property_set_pointer().
>
> Yes, since property_set_pointer is called independently
> on the type of the value.

We still call property_set_pointer() independently of the type of the
value even with this patch. The point is that we do not set the pointer
in property_copy_string_array(), so we only set the pointer once.

We used to have essentially for string arrays:

copy data
set pointer in dst
get pointer from dst
set pointer in dst

With this patch we have:

copy data
set pointer in dst

>
>
> > This is confising and awkward and I believe it
> > is cleaner for property_copy_string_array() to give a pointer to a copy
> > of a string array, and then property_entry_copy_data() use it when
> > handling the destination structure.
>
> We probably need a 3rd opinion here.

I think I can still convince you ;)

Thanks.

--
Dmitry