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

Reply via email to