raster pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=b38c610c7e60cbdcb45fd6d27450e39e3a9c9dd1
commit b38c610c7e60cbdcb45fd6d27450e39e3a9c9dd1 Author: Carsten Haitzler (Rasterman) <ras...@rasterman.com> Date: Tue Jan 31 14:48:36 2017 +0900 evlog - remove setting stack var to 0 until it is needed later we set stack var to 0 even if evlog was off and thus didn't use it. this cleans up the evlog func a bit and also moves locking until later so it's locked for the minimum period to punt something into the log buffer. it's an improvement, but no bug fix. --- src/lib/eina/eina_evlog.c | 38 ++++++++++++++++++-------------------- 1 file changed, 18 insertions(+), 20 deletions(-) diff --git a/src/lib/eina/eina_evlog.c b/src/lib/eina/eina_evlog.c index 7fec809..359badb 100644 --- a/src/lib/eina/eina_evlog.c +++ b/src/lib/eina/eina_evlog.c @@ -131,35 +131,33 @@ eina_evlog(const char *event, void *obj, double srctime, const char *detail) int size; char *strings; double now; - unsigned short detail_offset = 0; - unsigned short event_size; + unsigned short detail_offset, event_size; if (!_evlog_go) return; - now = get_time(); - eina_spinlock_take(&_evlog_lock); - size = sizeof(Eina_Evlog_Item); + + now = get_time(); event_size = strlen(event) + 1; - size += event_size; + size = sizeof(Eina_Evlog_Item) + event_size; if (detail) { - detail_offset = size; - size += strlen(detail) + 1; + detail_offset = size; + size += strlen(detail) + 1; } + else detail_offset = 0; size = sizeof(double) * ((size + sizeof(double) - 1) / sizeof(double)); - strings = push_buf(buf, size); - item = (Eina_Evlog_Item *)strings; - item->tim = now; - item->srctim = srctime; - item->thread = (unsigned long long)pthread_self(); - item->obj = (unsigned long long)obj; - item->event_offset = sizeof(Eina_Evlog_Item); - item->detail_offset = detail_offset; - item->event_next = size; - - strcpy(strings + sizeof(Eina_Evlog_Item), event); + eina_spinlock_take(&_evlog_lock); + strings = push_buf(buf, size); + item = (Eina_Evlog_Item *)strings; + item->tim = now; + item->srctim = srctime; + item->thread = (unsigned long long)pthread_self(); + item->obj = (unsigned long long)obj; + item->event_offset = sizeof(Eina_Evlog_Item); + item->detail_offset = detail_offset; + item->event_next = size; + strcpy(strings + size, event); if (detail_offset > 0) strcpy(strings + detail_offset, detail); - eina_spinlock_release(&_evlog_lock); } --