66#include " handle.h"
77#include " callback.h"
88
9+ #if defined(__unix__) || defined(__POSIX__) || defined(__APPLE__)
10+ #define UV_BUF (base, len ) {base, len}
11+ #else
12+ #define UV_BUF (base, len ) {len, base}
13+ #endif
14+
915namespace native
1016{
1117 namespace base
@@ -45,12 +51,12 @@ namespace native
4551 [](uv_handle_t *, size_t suggested_size){
4652 if (!max_alloc_size)
4753 {
48- return uv_buf_t { new char [suggested_size], suggested_size } ;
54+ return uv_buf_t UV_BUF ( new char [suggested_size], suggested_size ) ;
4955 }
5056 else
5157 {
5258 auto size = max_alloc_size > suggested_size ? suggested_size : max_alloc_size;
53- return uv_buf_t { new char [size], size } ;
59+ return uv_buf_t UV_BUF ( new char [size], size ) ;
5460 }
5561 },
5662 [](uv_stream_t * s, ssize_t nread, uv_buf_t buf){
@@ -76,7 +82,7 @@ namespace native
7682
7783 bool write (const char * buf, int len, std::function<void (error)> callback)
7884 {
79- uv_buf_t bufs[] = { uv_buf_t { const_cast <char *>(buf), len } };
85+ uv_buf_t bufs[] = { uv_buf_t UV_BUF ( const_cast <char *>(buf), len ) };
8086 callbacks::store (get ()->data , native::internal::uv_cid_write, callback);
8187 return uv_write (new uv_write_t , get<uv_stream_t >(), bufs, 1 , [](uv_write_t * req, int status) {
8288 callbacks::invoke<decltype (callback)>(req->handle ->data , native::internal::uv_cid_write, status?uv_last_error (req->handle ->loop ):error ());
@@ -86,7 +92,7 @@ namespace native
8692
8793 bool write (const std::string& buf, std::function<void (error)> callback)
8894 {
89- uv_buf_t bufs[] = { uv_buf_t { const_cast <char *>(buf.c_str ()), buf.length ()} };
95+ uv_buf_t bufs[] = { uv_buf_t UV_BUF ( const_cast <char *>(buf.c_str ()), buf.length ()) };
9096 callbacks::store (get ()->data , native::internal::uv_cid_write, callback);
9197 return uv_write (new uv_write_t , get<uv_stream_t >(), bufs, 1 , [](uv_write_t * req, int status) {
9298 callbacks::invoke<decltype (callback)>(req->handle ->data , native::internal::uv_cid_write, status?uv_last_error (req->handle ->loop ):error ());
@@ -96,7 +102,7 @@ namespace native
96102
97103 bool write (const std::vector<char >& buf, std::function<void (error)> callback)
98104 {
99- uv_buf_t bufs[] = { uv_buf_t { const_cast <char *>(&buf[0 ]), buf.size () } };
105+ uv_buf_t bufs[] = { uv_buf_t UV_BUF ( const_cast <char *>(&buf[0 ]), buf.size () ) };
100106 callbacks::store (get ()->data , native::internal::uv_cid_write, callback);
101107 return uv_write (new uv_write_t , get<uv_stream_t >(), bufs, 1 , [](uv_write_t * req, int status) {
102108 callbacks::invoke<decltype (callback)>(req->handle ->data , native::internal::uv_cid_write, status?uv_last_error (req->handle ->loop ):error ());
0 commit comments