Fixes a segmentation fault on 32 bits linux with glibc 2.15.
Thanks to Johan Bergström (@jbergstroem) for reporting the issue and testing
out the patch.
The only platforms where the dirent argument is non-const are OS X, OpenBSD
and older versions of FreeBSD (but not FreeBSD 9). Accommodate the first two.
Without this patch, the fallback implementation would be used if
uv_rwlock_init were to be called before a loop was created or
uv_default_loop() was called.
Fixes the following valgrind warning:
==29019== Syscall param writev(vector[...]) points to uninitialised byte(s)
==29019== at 0x584270B: writev (writev.c:51)
==29019== by 0x449BB2: uv__write (stream.c:733)
==29019== by 0x44AE91: uv_write2 (stream.c:1159)
==29019== by 0x44AF25: uv_write (stream.c:1180)
==29019== by 0x42CCAA: connect_cb (test-tcp-writealot.c:129)
==29019== by 0x44AC05: uv__stream_connect (stream.c:1097)
==29019== by 0x44AA25: uv__stream_io (stream.c:1050)
==29019== by 0x437430: uv__io_rw (core.c:539)
==29019== by 0x43C3D9: ev_invoke_pending (ev.c:2145)
==29019== by 0x436EC5: uv__poll (core.c:260)
==29019== by 0x436F0F: uv__run (core.c:269)
==29019== by 0x436F6E: uv_run (core.c:277)
==29019== Address 0x5f15040 is 0 bytes inside a block of size 94,371,840 alloc'd
==29019== at 0x4C2C5EF: malloc (vg_replace_malloc.c:270)
==29019== by 0x42CDED: run_test_tcp_writealot (test-tcp-writealot.c:148)
==29019== by 0x406551: run_test_part (runner.c:302)
==29019== by 0x405384: main (run-tests.c:57)
This commit fixes the following valgrind warning:
==26443== Conditional jump or move depends on uninitialised value(s)
==26443== at 0x44AAFF: uv__read (stream.c:872)
==26443== by 0x44ADD4: uv__stream_io (stream.c:1051)
==26443== by 0x4377B8: uv__io_rw (core.c:539)
==26443== by 0x43C761: ev_invoke_pending (ev.c:2145)
==26443== by 0x43724D: uv__poll (core.c:260)
==26443== by 0x437297: uv__run (core.c:269)
==26443== by 0x4372F6: uv_run (core.c:277)
==26443== by 0x42094B: run_test_pipe_ref4 (test-ref.c:334)
==26443== by 0x406551: run_test_part (runner.c:302)
==26443== by 0x405384: main (run-tests.c:57)
Don't return req->result after posting the work request. It's possible (if
unlikely) for a worker thread to process the request before the main thread
reaches the return statement.
Some platforms don't support sendfile() (netbsd, openbsd), others don't support
arbitrary file descriptors (freebsd, darwin) and yet others have quirks in their
implementation (sunos).
Work around the quirks. If all else fails, fall back to sendfile() emulation.
uv_fs_stat and uv_fs_lstat removed the trailing backslash (if any) from the path
in order to please a test case that was written for Windows. Remove the
compatibility hack and fix the test.
Free the memory that is used to store the new argv and envp. It's not strictly
necessary (the OS is going to reclaim the memory anyway) but it makes the output
from valgrind a lot less noisy.
gyp_uv was complaining because it never receives a value for which type
of library to build (static vs shared). This makes vcbuild.bat set the
default to build a static library.