On 22.12.16 17:44, Gustavo Sverzut Barbieri wrote: > On Thu, Dec 22, 2016 at 11:40 AM, Andrii Kroitor <an.kroi...@samsung.com> > wrote: >> On 22.12.16 15:00, Gustavo Sverzut Barbieri wrote: >>> On Thu, Dec 22, 2016 at 10:27 AM, Andrii Kroitor <an.kroi...@samsung.com> >>> wrote: >>>> lorddrew pushed a commit to branch master. >>>> >>>> http://git.enlightenment.org/core/efl.git/commit/?id=11e687578dca47f024dc230f2d23c579ddd91961 >>>> >>>> commit 11e687578dca47f024dc230f2d23c579ddd91961 >>>> Author: Andrii Kroitor <an.kroi...@samsung.com> >>>> Date: Thu Dec 22 14:10:10 2016 +0200 >>>> >>>> ecore_exe: fix send on Windows >>>> >>>> Check for bytes written only if more than 0 bytes were sent. >>>> I don't know why some efl code is trying to send 0 bytes, but that >>>> works on >>>> Linux and therefore should be fixed on Windows. >>>> --- >>>> src/lib/ecore/ecore_exe_win32.c | 2 +- >>>> 1 file changed, 1 insertion(+), 1 deletion(-) >>>> >>>> diff --git a/src/lib/ecore/ecore_exe_win32.c >>>> b/src/lib/ecore/ecore_exe_win32.c >>>> index 305298e..3532fe1 100644 >>>> --- a/src/lib/ecore/ecore_exe_win32.c >>>> +++ b/src/lib/ecore/ecore_exe_win32.c >>>> @@ -560,7 +560,7 @@ _impl_ecore_exe_send(Ecore_Exe *obj, >>>> BOOL res; >>>> >>>> res = WriteFile(exe->pipe_write.child_pipe_x, data, size, &num_exe, >>>> NULL); >>>> - if (!res || num_exe == 0) >>>> + if (size && !res || num_exe == 0) >>> eventually apps don't check what they try to send... but the library >>> should, then don't try to send, the WriteFile with zero-size is not >>> right. >>> >> I've experimented with adding abort() on sending zero bytes and this >> leads to segfault on `elementary_test -to Thumb` on Linux. >> So EFL code itself is actually trying to send 0 bytes to child process. >> I'm wondering is there any reason to do this on Linux? > I bet it's a bug in upper layers. But we shouldn't try to write zero > bytes. Also, see the Linux manpage write(2): > > If count is zero and fd refers to a regular file, then write() > may > return a failure status if one of the errors below is detected. If > no > errors are detected, or error detection is not performed, 0 will > be > returned without causing any other effect. If count is zero and > fd > refers to a file other than a regular file, the results are not > speciā > fied. > > We're talking about non-regular file, thus the second case, which > means unspecified. > > TL;DR: before WriteFile() or write() we should check: > > EINA_SAFETY_ON_TRUE_RETURN_VAL(size == 0, ...); > Please look at https://phab.enlightenment.org/D4510
-- *Best Regards, Andrii Kroitor * Engineer, Tizen Platform Lab Samsung R&D Institute Ukraine 57, Lva Tolstogo St., Kyiv 01032, Ukraine email: an.kroi...@samsung.com <mailto:an.kroi...@samsung.com> ------------------------------------------------------------------------------ Developer Access Program for Intel Xeon Phi Processors Access to Intel Xeon Phi processor-based developer platforms. With one year of Intel Parallel Studio XE. Training and support from Colfax. Order your platform today.http://sdm.link/intel _______________________________________________ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel