yes I do think we shouldn't ref, let the user do, as/when needed. so it's consistent across the board, like when you get a string (not share), you should strdup() it yourself
On Wed, May 2, 2018 at 3:19 PM, Cedric Bail <ced...@ddlm.me> wrote: > Yeah, I got to wonder about this one too. There was code expecting to own a > reference when manipulating STRINGSHARE. The alternative was maybe to do the > ref on the other side. The only other case where a get like that could > potentially return a ref is EINA_VALUE_TYPE_OBJECT, but we don't do it there. > If you think it is best to not ref, I will fix this the other way around. > > On May 2, 2018 7:33 AM, Gustavo Sverzut Barbieri <barbi...@gmail.com> wrote: >> this doesn't look right, we don't ref in other cases... >> >> On Tue, May 1, 2018 at 2:40 PM, Cedric BAIL cedric.b...@free.fr wrote: >> > cedric pushed a commit to branch master. >> > >> > http://git.enlightenment.org/core/efl.git/commit/?id=b1883c7989355e95cd4c826d3c7ecdbbbd257d77 >> > >> > commit b1883c7989355e95cd4c826d3c7ecdbbbd257d77 >> > Author: Cedric BAIL ced...@osg.samsung.com >> > Date: Fri Apr 27 16:19:42 2018 -0700 >> > >> > eina: make eina_value_pget on an EINA_VALUE_TYPE_STRINGSHARE return a >> > new reference to a stringshare. >> > --- >> > src/lib/eina/eina_value.c | 12 +++++++++++- >> > 1 file changed, 11 insertions(+), 1 deletion(-) >> > >> > diff --git a/src/lib/eina/eina_value.c b/src/lib/eina/eina_value.c >> > index cb5fbc11c4..ddb02af48d 100644 >> > --- a/src/lib/eina/eina_value.c >> > +++ b/src/lib/eina/eina_value.c >> > @@ -2225,6 +2225,16 @@ _eina_value_type_stringshare_pset(const >> > Eina_Value_Type *type EINA_UNUSED, void >> > } >> > >> > static Eina_Bool >> > +_eina_value_type_stringshare_pget(const Eina_Value_Type *type >> > EINA_UNUSED, const void *mem, void *ptr) >> > +{ >> > + const Eina_Stringshare * const *src = mem; >> > + Eina_Stringshare **dst = ptr; >> > + >> > + *dst = eina_stringshare_ref(*src); >> > + return EINA_TRUE; >> > +} >> > + >> > +static Eina_Bool >> > _eina_value_type_string_flush(const Eina_Value_Type *type EINA_UNUSED, >> > void *mem) >> > { >> > char *tmem = mem; >> >@@ -5197,7 +5207,7 @@ static const Eina_Value_Type >> >_EINA_VALUE_TYPE_BASICS[] = { >> > NULL, / no convert from */ >> > _eina_value_type_stringshare_vset, >> > _eina_value_type_stringshare_pset, >> > - _eina_value_type_string_common_pget >> > + _eina_value_type_stringshare_pget >> > }, >> > { >> > EINA_VALUE_TYPE_VERSION, > > > ------------------------------------------------------------------------------ > Check out the vibrant tech community on one of the world's most > engaging tech sites, Slashdot.org! http://sdm.link/slashdot > _______________________________________________ > enlightenment-devel mailing list > enlightenment-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel -- Gustavo Sverzut Barbieri -------------------------------------- Mobile: +55 (16) 99354-9890 ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel