[EGIT] [core/efl] master 01/01: efreet_xml: make sure we unmap the right pointer.

2018-03-03 Thread Al Poole
netstar pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=300831cb3cbc95b733bdaf4a17617007631a1589

commit 300831cb3cbc95b733bdaf4a17617007631a1589
Author: Al Poole 
Date:   Sat Mar 3 13:13:05 2018 +

efreet_xml: make sure we unmap the right pointer.

Seems Linux would munmap a lump of coal without failing. Make
sure the pointers match. Again bogus unmap not detected by
valgrind and not failing.

@fix T5949
---
 src/lib/efreet/efreet_xml.c | 7 ---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/src/lib/efreet/efreet_xml.c b/src/lib/efreet/efreet_xml.c
index 05261b2a4a..4f4cd2fea8 100644
--- a/src/lib/efreet/efreet_xml.c
+++ b/src/lib/efreet/efreet_xml.c
@@ -86,7 +86,7 @@ efreet_xml_new(const char *file)
 {
 Efreet_Xml *xml = NULL;
 int size, fd = -1;
-char *data = MAP_FAILED;
+char *tmp, *data = MAP_FAILED;
 struct stat st;
 int error = 0;
 
@@ -109,11 +109,12 @@ efreet_xml_new(const char *file)
 data = mmap(NULL, st.st_size, PROT_READ, MAP_SHARED, fd, 0);
 if (data == MAP_FAILED) goto efreet_error;
 
+tmp = data;
+
 error = 0;
 size = st.st_size;
-xml = efreet_xml_parse(&data, &size, &error);
+xml = efreet_xml_parse(&tmp, &size, &error);
 if (!xml || error) goto efreet_error;
-
 munmap(data, st.st_size);
 close(fd);
 return xml;

-- 




[EGIT] [core/efl] master 01/01: efl loop - remove commented out code left over from work on theads etc

2018-03-03 Thread Carsten Haitzler
raster pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=7d934a4a0de19f72150a177e0caaf76580999a92

commit 7d934a4a0de19f72150a177e0caaf76580999a92
Author: Carsten Haitzler (Rasterman) 
Date:   Sat Mar 3 18:59:40 2018 +0900

efl loop - remove commented out code left over from work on theads etc
---
 src/lib/ecore/efl_loop.c | 23 ---
 1 file changed, 23 deletions(-)

diff --git a/src/lib/ecore/efl_loop.c b/src/lib/ecore/efl_loop.c
index f4dd2bf246..4ba729dbb3 100644
--- a/src/lib/ecore/efl_loop.c
+++ b/src/lib/ecore/efl_loop.c
@@ -721,29 +721,6 @@ efl_build_version_set(int vmaj, int vmin, int vmic, int 
revision,
_app_efl_version.build_id = build_id ? strdup(build_id) : NULL;
 }
 
-/* HHH:
-EOLIAN static const Efl_Version *
-_efl_loop_app_efl_version_get(Eo *obj EINA_UNUSED, Efl_Loop_Data *pd 
EINA_UNUSED)
-{
-   return &_app_efl_version;
-}
-
-EOLIAN static const Efl_Version *
-_efl_loop_efl_version_get(Eo *obj EINA_UNUSED, Efl_Loop_Data *pd EINA_UNUSED)
-{
-   // vanilla EFL: flavor = NULL
-   static const Efl_Version version = {
-  .major = VMAJ,
-  .minor = VMIN,
-  .micro = VMIC,
-  .revision = VREV,
-  .build_id = EFL_BUILD_ID,
-  .flavor = NULL
-   };
-   return &version;
-}
-*/
-
 static void
 _env_sync(Efl_Loop_Data *pd, Efl_Task_Data *td)
 {

-- 




[EGIT] [core/efl] master 03/03: efl.task - add an api to clear environment

2018-03-03 Thread Carsten Haitzler
raster pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=aabbb211eab1022b39805fa45af581b41c6bea56

commit aabbb211eab1022b39805fa45af581b41c6bea56
Author: Carsten Haitzler (Rasterman) 
Date:   Sat Mar 3 18:01:05 2018 +0900

efl.task - add an api to clear environment
---
 src/lib/ecore/efl_loop.c  | 15 +++
 src/lib/ecore/efl_loop.eo |  1 +
 src/lib/ecore/efl_task.c  |  7 +++
 src/lib/ecore/efl_task.eo |  3 +++
 4 files changed, 26 insertions(+)

diff --git a/src/lib/ecore/efl_loop.c b/src/lib/ecore/efl_loop.c
index b3a58f9ae9..f4dd2bf246 100644
--- a/src/lib/ecore/efl_loop.c
+++ b/src/lib/ecore/efl_loop.c
@@ -901,6 +901,21 @@ _efl_loop_efl_task_env_get(Eo *obj, Efl_Loop_Data *pd, 
const char *var)
return efl_task_env_get(efl_super(obj, EFL_LOOP_CLASS), var);
 }
 
+EOLIAN static void
+_efl_loop_efl_task_env_reset(Eo *obj EINA_UNUSED, Efl_Loop_Data *pd)
+{
+   Efl_Task_Data *td = efl_data_scope_get(obj, EFL_TASK_CLASS);
+   if (!td) return;
+   eina_lock_take(&_environ_lock);
+#ifdef HAVE_CLEARENV
+   clearenv();
+#else
+   environ = NULL;
+#endif
+   _env_sync(pd, td);
+   eina_lock_release(&_environ_lock);
+}
+
 EOLIAN static Eina_Bool
 _efl_loop_efl_task_run(Eo *obj, Efl_Loop_Data *pd EINA_UNUSED)
 {
diff --git a/src/lib/ecore/efl_loop.eo b/src/lib/ecore/efl_loop.eo
index 1ecdd68538..6531086fd8 100644
--- a/src/lib/ecore/efl_loop.eo
+++ b/src/lib/ecore/efl_loop.eo
@@ -127,6 +127,7 @@ class Efl.Loop (Efl.Task)
   Efl.Object.destructor;
   Efl.Object.provider_find;
   Efl.Task.env { set; get; }
+  Efl.Task.env_reset;
   Efl.Task.run;
   Efl.Task.end;
}
diff --git a/src/lib/ecore/efl_task.c b/src/lib/ecore/efl_task.c
index 9a727743ed..d269773117 100644
--- a/src/lib/ecore/efl_task.c
+++ b/src/lib/ecore/efl_task.c
@@ -344,6 +344,13 @@ _efl_task_env_get(Eo *obj EINA_UNUSED, Efl_Task_Data *pd, 
const char *var)
 }
 
 EOLIAN static void
+_efl_task_env_reset(Eo *obj EINA_UNUSED, Efl_Task_Data *pd)
+{
+   if (pd->env) eina_hash_free(pd->env);
+   pd->env = NULL;
+}
+
+EOLIAN static void
 _efl_task_priority_set(Eo *obj EINA_UNUSED, Efl_Task_Data *pd, 
Efl_Task_Priority priority)
 {
pd->priority = priority;
diff --git a/src/lib/ecore/efl_task.eo b/src/lib/ecore/efl_task.eo
index e44f929590..26ecb4b5a5 100644
--- a/src/lib/ecore/efl_task.eo
+++ b/src/lib/ecore/efl_task.eo
@@ -108,6 +108,9 @@ class Efl.Task (Efl.Object, Efl.Io.Reader, Efl.Io.Writer, 
Efl.Io.Closer)
   is $NULL or if it is an empty string ]]
  }
   }
+  env_reset {
+ [[ Clear all environment variables. ]]
+  }
   @property priority {
  [[ The priority of this task. ]]
  get { }

-- 




[EGIT] [core/efl] master 01/03: efl loop promises - cleare out promise data to null

2018-03-03 Thread Carsten Haitzler
raster pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=d80ef6d7a98e0cb3ceb995573c58d1df965639e4

commit d80ef6d7a98e0cb3ceb995573c58d1df965639e4
Author: Carsten Haitzler (Rasterman) 
Date:   Sat Mar 3 17:15:10 2018 +0900

efl loop promises - cleare out promise data to null

so there is something broken in the complect efl promise/loop promise
that the clear of promises on loop destroy is clearing
promises/futures that have already triggered (loop timer ones). i've
spent enough time figuring out that it is happening.
_efl_loop_timeout_del() simple doenst ensure the future in
pending_futures for that promise is removed from the list. getting the
future from the promise handle is an exercise in pain... so i'm not
continuing with that path and will just ignore it.

but for now filling the promise data with null at least means if the
menory is re-used after free it wont see garbage freed ptrs and get
nulls so its easier to track.
---
 src/lib/ecore/efl_loop.c | 11 ++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/src/lib/ecore/efl_loop.c b/src/lib/ecore/efl_loop.c
index 0ccee1706f..b3a58f9ae9 100644
--- a/src/lib/ecore/efl_loop.c
+++ b/src/lib/ecore/efl_loop.c
@@ -488,7 +488,10 @@ static void
 _efl_loop_idle_cancel(void *data, const Eina_Promise *dead_ptr EINA_UNUSED)
 {
Efl_Loop_Promise_Simple_Data *d = data;
+
ecore_idler_del(d->idler);
+   d->idler = NULL;
+   d->promise = NULL;
efl_loop_promise_simple_data_mp_free(d);
 }
 
@@ -497,6 +500,8 @@ _efl_loop_idle_done(void *data)
 {
Efl_Loop_Promise_Simple_Data *d = data;
eina_promise_resolve(d->promise, EINA_VALUE_EMPTY);
+   d->idler = NULL;
+   d->promise = NULL;
efl_loop_promise_simple_data_mp_free(d);
return EINA_FALSE;
 }
@@ -523,6 +528,8 @@ _efl_loop_idle(Eo *obj, Efl_Loop_Data *pd EINA_UNUSED)
return efl_future_Eina_FutureXXX_then(obj, eina_future_new(p));
 
 idler_error:
+   d->idler = NULL;
+   d->promise = NULL;
efl_loop_promise_simple_data_mp_free(d);
return NULL;
 }
@@ -552,6 +559,7 @@ _efl_loop_timeout_del(void *data, const Efl_Event *event 
EINA_UNUSED)
Efl_Loop_Promise_Simple_Data *d = data;
 
d->timer = NULL;
+   d->promise = NULL;
efl_loop_promise_simple_data_mp_free(d);
 }
 
@@ -585,6 +593,8 @@ _efl_loop_timeout(Eo *obj, Efl_Loop_Data *pd EINA_UNUSED, 
double tim)
return efl_future_Eina_FutureXXX_then(obj, eina_future_new(p));
 
 timer_error:
+   d->timer = NULL;
+   d->promise = NULL;
efl_loop_promise_simple_data_mp_free(d);
return NULL;
 }
@@ -759,7 +769,6 @@ _env_sync(Efl_Loop_Data *pd, Efl_Task_Data *td)
{
   if (pd->env.environ_copy[i] != environ[i])
 {
-   printf("  env %i mismatch\n", i);
update = EINA_TRUE;
break;
 }

-- 




[EGIT] [core/efl] master 02/03: efl exe - fix indent

2018-03-03 Thread Carsten Haitzler
raster pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=6c0ed8fe76fed8aec8c8cbaac58c30f289c0e098

commit 6c0ed8fe76fed8aec8c8cbaac58c30f289c0e098
Author: Carsten Haitzler (Rasterman) 
Date:   Sat Mar 3 17:57:17 2018 +0900

efl exe - fix indent
---
 src/lib/ecore/efl_exe.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/lib/ecore/efl_exe.c b/src/lib/ecore/efl_exe.c
index 1443bbf071..0df9ede462 100644
--- a/src/lib/ecore/efl_exe.c
+++ b/src/lib/ecore/efl_exe.c
@@ -518,7 +518,7 @@ _efl_exe_efl_task_run(Eo *obj EINA_UNUSED, Efl_Exe_Data *pd)
// actually setenv the env hash (clear what was there before so it is
// the only env there)
 #ifdef HAVE_CLEARENV
-  clearenv();
+   clearenv();
 #else
environ = NULL;
 #endif

--