@@ -660,27 +660,24 @@ void WASI::FdPread(const FunctionCallbackInfo<Value>& args) {
660660 iovs_ptr,
661661 iovs_len * UVWASI_SERDES_SIZE_iovec_t);
662662 CHECK_BOUNDS_OR_RETURN (args, mem_size, nread_ptr, UVWASI_SERDES_SIZE_size_t);
663- uvwasi_iovec_t * iovs = UncheckedCalloc <uvwasi_iovec_t >(iovs_len);
663+ std::vector <uvwasi_iovec_t > iovs (iovs_len);
664664 uvwasi_errno_t err;
665665
666- if (iovs == nullptr ) {
667- args.GetReturnValue ().Set (UVWASI_ENOMEM);
668- return ;
669- }
670-
671- err = uvwasi_serdes_readv_iovec_t (memory, mem_size, iovs_ptr, iovs, iovs_len);
666+ err = uvwasi_serdes_readv_iovec_t (memory,
667+ mem_size,
668+ iovs_ptr,
669+ iovs.data (),
670+ iovs_len);
672671 if (err != UVWASI_ESUCCESS) {
673- free (iovs);
674672 args.GetReturnValue ().Set (err);
675673 return ;
676674 }
677675
678676 uvwasi_size_t nread;
679- err = uvwasi_fd_pread (&wasi->uvw_ , fd, iovs, iovs_len, offset, &nread);
677+ err = uvwasi_fd_pread (&wasi->uvw_ , fd, iovs. data () , iovs_len, offset, &nread);
680678 if (err == UVWASI_ESUCCESS)
681679 uvwasi_serdes_write_size_t (memory, nread_ptr, nread);
682680
683- free (iovs);
684681 args.GetReturnValue ().Set (err);
685682}
686683
@@ -763,31 +760,29 @@ void WASI::FdPwrite(const FunctionCallbackInfo<Value>& args) {
763760 mem_size,
764761 nwritten_ptr,
765762 UVWASI_SERDES_SIZE_size_t);
766- uvwasi_ciovec_t * iovs = UncheckedCalloc <uvwasi_ciovec_t >(iovs_len);
763+ std::vector <uvwasi_ciovec_t > iovs (iovs_len);
767764 uvwasi_errno_t err;
768765
769- if (iovs == nullptr ) {
770- args.GetReturnValue ().Set (UVWASI_ENOMEM);
771- return ;
772- }
773-
774766 err = uvwasi_serdes_readv_ciovec_t (memory,
775767 mem_size,
776768 iovs_ptr,
777- iovs,
769+ iovs. data () ,
778770 iovs_len);
779771 if (err != UVWASI_ESUCCESS) {
780- free (iovs);
781772 args.GetReturnValue ().Set (err);
782773 return ;
783774 }
784775
785776 uvwasi_size_t nwritten;
786- err = uvwasi_fd_pwrite (&wasi->uvw_ , fd, iovs, iovs_len, offset, &nwritten);
777+ err = uvwasi_fd_pwrite (&wasi->uvw_ ,
778+ fd,
779+ iovs.data (),
780+ iovs_len,
781+ offset,
782+ &nwritten);
787783 if (err == UVWASI_ESUCCESS)
788784 uvwasi_serdes_write_size_t (memory, nwritten_ptr, nwritten);
789785
790- free (iovs);
791786 args.GetReturnValue ().Set (err);
792787}
793788
@@ -813,27 +808,24 @@ void WASI::FdRead(const FunctionCallbackInfo<Value>& args) {
813808 iovs_ptr,
814809 iovs_len * UVWASI_SERDES_SIZE_iovec_t);
815810 CHECK_BOUNDS_OR_RETURN (args, mem_size, nread_ptr, UVWASI_SERDES_SIZE_size_t);
816- uvwasi_iovec_t * iovs = UncheckedCalloc <uvwasi_iovec_t >(iovs_len);
811+ std::vector <uvwasi_iovec_t > iovs (iovs_len);
817812 uvwasi_errno_t err;
818813
819- if (iovs == nullptr ) {
820- args.GetReturnValue ().Set (UVWASI_ENOMEM);
821- return ;
822- }
823-
824- err = uvwasi_serdes_readv_iovec_t (memory, mem_size, iovs_ptr, iovs, iovs_len);
814+ err = uvwasi_serdes_readv_iovec_t (memory,
815+ mem_size,
816+ iovs_ptr,
817+ iovs.data (),
818+ iovs_len);
825819 if (err != UVWASI_ESUCCESS) {
826- free (iovs);
827820 args.GetReturnValue ().Set (err);
828821 return ;
829822 }
830823
831824 uvwasi_size_t nread;
832- err = uvwasi_fd_read (&wasi->uvw_ , fd, iovs, iovs_len, &nread);
825+ err = uvwasi_fd_read (&wasi->uvw_ , fd, iovs. data () , iovs_len, &nread);
833826 if (err == UVWASI_ESUCCESS)
834827 uvwasi_serdes_write_size_t (memory, nread_ptr, nread);
835828
836- free (iovs);
837829 args.GetReturnValue ().Set (err);
838830}
839831
@@ -995,31 +987,24 @@ void WASI::FdWrite(const FunctionCallbackInfo<Value>& args) {
995987 mem_size,
996988 nwritten_ptr,
997989 UVWASI_SERDES_SIZE_size_t);
998- uvwasi_ciovec_t * iovs = UncheckedCalloc <uvwasi_ciovec_t >(iovs_len);
990+ std::vector <uvwasi_ciovec_t > iovs (iovs_len);
999991 uvwasi_errno_t err;
1000992
1001- if (iovs == nullptr ) {
1002- args.GetReturnValue ().Set (UVWASI_ENOMEM);
1003- return ;
1004- }
1005-
1006993 err = uvwasi_serdes_readv_ciovec_t (memory,
1007994 mem_size,
1008995 iovs_ptr,
1009- iovs,
996+ iovs. data () ,
1010997 iovs_len);
1011998 if (err != UVWASI_ESUCCESS) {
1012- free (iovs);
1013999 args.GetReturnValue ().Set (err);
10141000 return ;
10151001 }
10161002
10171003 uvwasi_size_t nwritten;
1018- err = uvwasi_fd_write (&wasi->uvw_ , fd, iovs, iovs_len, &nwritten);
1004+ err = uvwasi_fd_write (&wasi->uvw_ , fd, iovs. data () , iovs_len, &nwritten);
10191005 if (err == UVWASI_ESUCCESS)
10201006 uvwasi_serdes_write_size_t (memory, nwritten_ptr, nwritten);
10211007
1022- free (iovs);
10231008 args.GetReturnValue ().Set (err);
10241009}
10251010
@@ -1434,21 +1419,8 @@ void WASI::PollOneoff(const FunctionCallbackInfo<Value>& args) {
14341419 mem_size,
14351420 nevents_ptr,
14361421 UVWASI_SERDES_SIZE_size_t);
1437- uvwasi_subscription_t * in =
1438- UncheckedCalloc<uvwasi_subscription_t >(nsubscriptions);
1439-
1440- if (in == nullptr ) {
1441- args.GetReturnValue ().Set (UVWASI_ENOMEM);
1442- return ;
1443- }
1444-
1445- uvwasi_event_t * out = UncheckedCalloc<uvwasi_event_t >(nsubscriptions);
1446-
1447- if (out == nullptr ) {
1448- free (in);
1449- args.GetReturnValue ().Set (UVWASI_ENOMEM);
1450- return ;
1451- }
1422+ std::vector<uvwasi_subscription_t > in (nsubscriptions);
1423+ std::vector<uvwasi_event_t > out (nsubscriptions);
14521424
14531425 for (uint32_t i = 0 ; i < nsubscriptions; ++i) {
14541426 uvwasi_serdes_read_subscription_t (memory, in_ptr, &in[i]);
@@ -1457,8 +1429,8 @@ void WASI::PollOneoff(const FunctionCallbackInfo<Value>& args) {
14571429
14581430 uvwasi_size_t nevents;
14591431 uvwasi_errno_t err = uvwasi_poll_oneoff (&wasi->uvw_ ,
1460- in,
1461- out,
1432+ in. data () ,
1433+ out. data () ,
14621434 nsubscriptions,
14631435 &nevents);
14641436 if (err == UVWASI_ESUCCESS) {
@@ -1470,8 +1442,6 @@ void WASI::PollOneoff(const FunctionCallbackInfo<Value>& args) {
14701442 }
14711443 }
14721444
1473- free (in);
1474- free (out);
14751445 args.GetReturnValue ().Set (err);
14761446}
14771447
@@ -1562,20 +1532,13 @@ void WASI::SockRecv(const FunctionCallbackInfo<Value>& args) {
15621532 ri_data_len * UVWASI_SERDES_SIZE_iovec_t);
15631533 CHECK_BOUNDS_OR_RETURN (args, mem_size, ro_datalen_ptr, 4 );
15641534 CHECK_BOUNDS_OR_RETURN (args, mem_size, ro_flags_ptr, 4 );
1565- uvwasi_iovec_t * ri_data = UncheckedCalloc<uvwasi_iovec_t >(ri_data_len);
1566-
1567- if (ri_data == nullptr ) {
1568- args.GetReturnValue ().Set (UVWASI_ENOMEM);
1569- return ;
1570- }
1571-
1535+ std::vector<uvwasi_iovec_t > ri_data (ri_data_len);
15721536 uvwasi_errno_t err = uvwasi_serdes_readv_iovec_t (memory,
15731537 mem_size,
15741538 ri_data_ptr,
1575- ri_data,
1539+ ri_data. data () ,
15761540 ri_data_len);
15771541 if (err != UVWASI_ESUCCESS) {
1578- free (ri_data);
15791542 args.GetReturnValue ().Set (err);
15801543 return ;
15811544 }
@@ -1584,7 +1547,7 @@ void WASI::SockRecv(const FunctionCallbackInfo<Value>& args) {
15841547 uvwasi_roflags_t ro_flags;
15851548 err = uvwasi_sock_recv (&wasi->uvw_ ,
15861549 sock,
1587- ri_data,
1550+ ri_data. data () ,
15881551 ri_data_len,
15891552 ri_flags,
15901553 &ro_datalen,
@@ -1594,7 +1557,6 @@ void WASI::SockRecv(const FunctionCallbackInfo<Value>& args) {
15941557 uvwasi_serdes_write_roflags_t (memory, ro_flags_ptr, ro_flags);
15951558 }
15961559
1597- free (ri_data);
15981560 args.GetReturnValue ().Set (err);
15991561}
16001562
@@ -1631,35 +1593,27 @@ void WASI::SockSend(const FunctionCallbackInfo<Value>& args) {
16311593 mem_size,
16321594 so_datalen_ptr,
16331595 UVWASI_SERDES_SIZE_size_t);
1634- uvwasi_ciovec_t * si_data = UncheckedCalloc<uvwasi_ciovec_t >(si_data_len);
1635-
1636- if (si_data == nullptr ) {
1637- args.GetReturnValue ().Set (UVWASI_ENOMEM);
1638- return ;
1639- }
1640-
1596+ std::vector<uvwasi_ciovec_t > si_data (si_data_len);
16411597 uvwasi_errno_t err = uvwasi_serdes_readv_ciovec_t (memory,
16421598 mem_size,
16431599 si_data_ptr,
1644- si_data,
1600+ si_data. data () ,
16451601 si_data_len);
16461602 if (err != UVWASI_ESUCCESS) {
1647- free (si_data);
16481603 args.GetReturnValue ().Set (err);
16491604 return ;
16501605 }
16511606
16521607 uvwasi_size_t so_datalen;
16531608 err = uvwasi_sock_send (&wasi->uvw_ ,
16541609 sock,
1655- si_data,
1610+ si_data. data () ,
16561611 si_data_len,
16571612 si_flags,
16581613 &so_datalen);
16591614 if (err == UVWASI_ESUCCESS)
16601615 uvwasi_serdes_write_size_t (memory, so_datalen_ptr, so_datalen);
16611616
1662- free (si_data);
16631617 args.GetReturnValue ().Set (err);
16641618}
16651619
0 commit comments