This is not right. You can use only -1 and you can use the constructor. Em sex, 22 de set de 2017 às 18:58, Cedric BAIL <cedric.b...@free.fr> escreveu:
> cedric pushed a commit to branch master. > > > http://git.enlightenment.org/core/efl.git/commit/?id=17507bab43e18b3a29fb045302de6c4f88fef594 > > commit 17507bab43e18b3a29fb045302de6c4f88fef594 > Author: Cedric Bail <ced...@osg.samsung.com> > Date: Fri Sep 22 14:55:55 2017 -0700 > > ecore: force initialization of Efl.Io.Closer.Fd. > > This will prevent closing magically fd 0 when the object is not > initialized yet. > --- > src/lib/ecore/efl_io_closer_fd.c | 24 +++++++++++++++++++++++- > 1 file changed, 23 insertions(+), 1 deletion(-) > > diff --git a/src/lib/ecore/efl_io_closer_fd.c > b/src/lib/ecore/efl_io_closer_fd.c > index 42724e0646..e55de422af 100644 > --- a/src/lib/ecore/efl_io_closer_fd.c > +++ b/src/lib/ecore/efl_io_closer_fd.c > @@ -13,28 +13,43 @@ > typedef struct _Efl_Io_Closer_Fd_Data > { > int fd; > + > Eina_Bool close_on_exec; > Eina_Bool close_on_destructor; > + Eina_Bool initialized; > } Efl_Io_Closer_Fd_Data; > > +static void > +_efl_io_closer_initialize(Efl_Io_Closer_Fd_Data *pd) > +{ > + if (pd->initialized) return ; > + pd->fd = -1; > + pd->initialized = EINA_TRUE; > +} > + > EOLIAN static void > _efl_io_closer_fd_closer_fd_set(Eo *o EINA_UNUSED, Efl_Io_Closer_Fd_Data > *pd, int fd) > { > + _efl_io_closer_initialize(pd); > pd->fd = fd; > } > > EOLIAN static int > _efl_io_closer_fd_closer_fd_get(Eo *o EINA_UNUSED, Efl_Io_Closer_Fd_Data > *pd) > { > + _efl_io_closer_initialize(pd); > return pd->fd; > } > > EOLIAN static Eina_Error > _efl_io_closer_fd_efl_io_closer_close(Eo *o, Efl_Io_Closer_Fd_Data *pd > EINA_UNUSED) > { > - int fd = efl_io_closer_fd_get(o); > + int fd; > Eina_Error err = 0; > > + _efl_io_closer_initialize(pd); > + fd = efl_io_closer_fd_get(o); > + > EINA_SAFETY_ON_TRUE_RETURN_VAL(fd < 0, EBADF); > > efl_io_closer_fd_set(o, -1); > @@ -46,12 +61,15 @@ _efl_io_closer_fd_efl_io_closer_close(Eo *o, > Efl_Io_Closer_Fd_Data *pd EINA_UNUS > EOLIAN static Eina_Bool > _efl_io_closer_fd_efl_io_closer_closed_get(Eo *o, Efl_Io_Closer_Fd_Data > *pd EINA_UNUSED) > { > + _efl_io_closer_initialize(pd); > return efl_io_closer_fd_get(o) < 0; > } > > EOLIAN static Eina_Bool > _efl_io_closer_fd_efl_io_closer_close_on_exec_set(Eo *o, > Efl_Io_Closer_Fd_Data *pd, Eina_Bool close_on_exec) > { > + _efl_io_closer_initialize(pd); > + > #ifdef _WIN32 > DBG("close on exec is not supported on windows"); > pd->close_on_exec = close_on_exec; > @@ -83,6 +101,8 @@ _efl_io_closer_fd_efl_io_closer_close_on_exec_set(Eo > *o, Efl_Io_Closer_Fd_Data * > EOLIAN static Eina_Bool > _efl_io_closer_fd_efl_io_closer_close_on_exec_get(Eo *o, > Efl_Io_Closer_Fd_Data *pd) > { > + _efl_io_closer_initialize(pd); > + > #ifdef _WIN32 > return pd->close_on_exec; > (void)o; > @@ -110,12 +130,14 @@ _efl_io_closer_fd_efl_io_closer_close_on_exec_get(Eo > *o, Efl_Io_Closer_Fd_Data * > EOLIAN static void > _efl_io_closer_fd_efl_io_closer_close_on_destructor_set(Eo *o > EINA_UNUSED, Efl_Io_Closer_Fd_Data *pd, Eina_Bool close_on_destructor) > { > + _efl_io_closer_initialize(pd); > pd->close_on_destructor = close_on_destructor; > } > > EOLIAN static Eina_Bool > _efl_io_closer_fd_efl_io_closer_close_on_destructor_get(Eo *o > EINA_UNUSED, Efl_Io_Closer_Fd_Data *pd) > { > + _efl_io_closer_initialize(pd); > return pd->close_on_destructor; > } > > > -- > > > -- 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