@@ -661,27 +661,24 @@ void WASI::FdPread(const FunctionCallbackInfo<Value>& args) {
661661 iovs_ptr,
662662 iovs_len * UVWASI_SERDES_SIZE_iovec_t);
663663 CHECK_BOUNDS_OR_RETURN (args, mem_size, nread_ptr, UVWASI_SERDES_SIZE_size_t);
664- uvwasi_iovec_t * iovs = UncheckedCalloc <uvwasi_iovec_t >(iovs_len);
664+ std::vector <uvwasi_iovec_t > iovs (iovs_len);
665665 uvwasi_errno_t err;
666666
667- if (iovs == nullptr ) {
668- args.GetReturnValue ().Set (UVWASI_ENOMEM);
669- return ;
670- }
671-
672- err = uvwasi_serdes_readv_iovec_t (memory, mem_size, iovs_ptr, iovs, iovs_len);
667+ err = uvwasi_serdes_readv_iovec_t (memory,
668+ mem_size,
669+ iovs_ptr,
670+ iovs.data (),
671+ iovs_len);
673672 if (err != UVWASI_ESUCCESS) {
674- free (iovs);
675673 args.GetReturnValue ().Set (err);
676674 return ;
677675 }
678676
679677 uvwasi_size_t nread;
680- err = uvwasi_fd_pread (&wasi->uvw_ , fd, iovs, iovs_len, offset, &nread);
678+ err = uvwasi_fd_pread (&wasi->uvw_ , fd, iovs. data () , iovs_len, offset, &nread);
681679 if (err == UVWASI_ESUCCESS)
682680 uvwasi_serdes_write_size_t (memory, nread_ptr, nread);
683681
684- free (iovs);
685682 args.GetReturnValue ().Set (err);
686683}
687684
@@ -764,31 +761,29 @@ void WASI::FdPwrite(const FunctionCallbackInfo<Value>& args) {
764761 mem_size,
765762 nwritten_ptr,
766763 UVWASI_SERDES_SIZE_size_t);
767- uvwasi_ciovec_t * iovs = UncheckedCalloc <uvwasi_ciovec_t >(iovs_len);
764+ std::vector <uvwasi_ciovec_t > iovs (iovs_len);
768765 uvwasi_errno_t err;
769766
770- if (iovs == nullptr ) {
771- args.GetReturnValue ().Set (UVWASI_ENOMEM);
772- return ;
773- }
774-
775767 err = uvwasi_serdes_readv_ciovec_t (memory,
776768 mem_size,
777769 iovs_ptr,
778- iovs,
770+ iovs. data () ,
779771 iovs_len);
780772 if (err != UVWASI_ESUCCESS) {
781- free (iovs);
782773 args.GetReturnValue ().Set (err);
783774 return ;
784775 }
785776
786777 uvwasi_size_t nwritten;
787- err = uvwasi_fd_pwrite (&wasi->uvw_ , fd, iovs, iovs_len, offset, &nwritten);
778+ err = uvwasi_fd_pwrite (&wasi->uvw_ ,
779+ fd,
780+ iovs.data (),
781+ iovs_len,
782+ offset,
783+ &nwritten);
788784 if (err == UVWASI_ESUCCESS)
789785 uvwasi_serdes_write_size_t (memory, nwritten_ptr, nwritten);
790786
791- free (iovs);
792787 args.GetReturnValue ().Set (err);
793788}
794789
@@ -814,27 +809,24 @@ void WASI::FdRead(const FunctionCallbackInfo<Value>& args) {
814809 iovs_ptr,
815810 iovs_len * UVWASI_SERDES_SIZE_iovec_t);
816811 CHECK_BOUNDS_OR_RETURN (args, mem_size, nread_ptr, UVWASI_SERDES_SIZE_size_t);
817- uvwasi_iovec_t * iovs = UncheckedCalloc <uvwasi_iovec_t >(iovs_len);
812+ std::vector <uvwasi_iovec_t > iovs (iovs_len);
818813 uvwasi_errno_t err;
819814
820- if (iovs == nullptr ) {
821- args.GetReturnValue ().Set (UVWASI_ENOMEM);
822- return ;
823- }
824-
825- err = uvwasi_serdes_readv_iovec_t (memory, mem_size, iovs_ptr, iovs, iovs_len);
815+ err = uvwasi_serdes_readv_iovec_t (memory,
816+ mem_size,
817+ iovs_ptr,
818+ iovs.data (),
819+ iovs_len);
826820 if (err != UVWASI_ESUCCESS) {
827- free (iovs);
828821 args.GetReturnValue ().Set (err);
829822 return ;
830823 }
831824
832825 uvwasi_size_t nread;
833- err = uvwasi_fd_read (&wasi->uvw_ , fd, iovs, iovs_len, &nread);
826+ err = uvwasi_fd_read (&wasi->uvw_ , fd, iovs. data () , iovs_len, &nread);
834827 if (err == UVWASI_ESUCCESS)
835828 uvwasi_serdes_write_size_t (memory, nread_ptr, nread);
836829
837- free (iovs);
838830 args.GetReturnValue ().Set (err);
839831}
840832
@@ -996,31 +988,24 @@ void WASI::FdWrite(const FunctionCallbackInfo<Value>& args) {
996988 mem_size,
997989 nwritten_ptr,
998990 UVWASI_SERDES_SIZE_size_t);
999- uvwasi_ciovec_t * iovs = UncheckedCalloc <uvwasi_ciovec_t >(iovs_len);
991+ std::vector <uvwasi_ciovec_t > iovs (iovs_len);
1000992 uvwasi_errno_t err;
1001993
1002- if (iovs == nullptr ) {
1003- args.GetReturnValue ().Set (UVWASI_ENOMEM);
1004- return ;
1005- }
1006-
1007994 err = uvwasi_serdes_readv_ciovec_t (memory,
1008995 mem_size,
1009996 iovs_ptr,
1010- iovs,
997+ iovs. data () ,
1011998 iovs_len);
1012999 if (err != UVWASI_ESUCCESS) {
1013- free (iovs);
10141000 args.GetReturnValue ().Set (err);
10151001 return ;
10161002 }
10171003
10181004 uvwasi_size_t nwritten;
1019- err = uvwasi_fd_write (&wasi->uvw_ , fd, iovs, iovs_len, &nwritten);
1005+ err = uvwasi_fd_write (&wasi->uvw_ , fd, iovs. data () , iovs_len, &nwritten);
10201006 if (err == UVWASI_ESUCCESS)
10211007 uvwasi_serdes_write_size_t (memory, nwritten_ptr, nwritten);
10221008
1023- free (iovs);
10241009 args.GetReturnValue ().Set (err);
10251010}
10261011
@@ -1435,21 +1420,8 @@ void WASI::PollOneoff(const FunctionCallbackInfo<Value>& args) {
14351420 mem_size,
14361421 nevents_ptr,
14371422 UVWASI_SERDES_SIZE_size_t);
1438- uvwasi_subscription_t * in =
1439- UncheckedCalloc<uvwasi_subscription_t >(nsubscriptions);
1440-
1441- if (in == nullptr ) {
1442- args.GetReturnValue ().Set (UVWASI_ENOMEM);
1443- return ;
1444- }
1445-
1446- uvwasi_event_t * out = UncheckedCalloc<uvwasi_event_t >(nsubscriptions);
1447-
1448- if (out == nullptr ) {
1449- free (in);
1450- args.GetReturnValue ().Set (UVWASI_ENOMEM);
1451- return ;
1452- }
1423+ std::vector<uvwasi_subscription_t > in (nsubscriptions);
1424+ std::vector<uvwasi_event_t > out (nsubscriptions);
14531425
14541426 for (uint32_t i = 0 ; i < nsubscriptions; ++i) {
14551427 uvwasi_serdes_read_subscription_t (memory, in_ptr, &in[i]);
@@ -1458,8 +1430,8 @@ void WASI::PollOneoff(const FunctionCallbackInfo<Value>& args) {
14581430
14591431 uvwasi_size_t nevents;
14601432 uvwasi_errno_t err = uvwasi_poll_oneoff (&wasi->uvw_ ,
1461- in,
1462- out,
1433+ in. data () ,
1434+ out. data () ,
14631435 nsubscriptions,
14641436 &nevents);
14651437 if (err == UVWASI_ESUCCESS) {
@@ -1471,8 +1443,6 @@ void WASI::PollOneoff(const FunctionCallbackInfo<Value>& args) {
14711443 }
14721444 }
14731445
1474- free (in);
1475- free (out);
14761446 args.GetReturnValue ().Set (err);
14771447}
14781448
@@ -1563,20 +1533,13 @@ void WASI::SockRecv(const FunctionCallbackInfo<Value>& args) {
15631533 ri_data_len * UVWASI_SERDES_SIZE_iovec_t);
15641534 CHECK_BOUNDS_OR_RETURN (args, mem_size, ro_datalen_ptr, 4 );
15651535 CHECK_BOUNDS_OR_RETURN (args, mem_size, ro_flags_ptr, 4 );
1566- uvwasi_iovec_t * ri_data = UncheckedCalloc<uvwasi_iovec_t >(ri_data_len);
1567-
1568- if (ri_data == nullptr ) {
1569- args.GetReturnValue ().Set (UVWASI_ENOMEM);
1570- return ;
1571- }
1572-
1536+ std::vector<uvwasi_iovec_t > ri_data (ri_data_len);
15731537 uvwasi_errno_t err = uvwasi_serdes_readv_iovec_t (memory,
15741538 mem_size,
15751539 ri_data_ptr,
1576- ri_data,
1540+ ri_data. data () ,
15771541 ri_data_len);
15781542 if (err != UVWASI_ESUCCESS) {
1579- free (ri_data);
15801543 args.GetReturnValue ().Set (err);
15811544 return ;
15821545 }
@@ -1585,7 +1548,7 @@ void WASI::SockRecv(const FunctionCallbackInfo<Value>& args) {
15851548 uvwasi_roflags_t ro_flags;
15861549 err = uvwasi_sock_recv (&wasi->uvw_ ,
15871550 sock,
1588- ri_data,
1551+ ri_data. data () ,
15891552 ri_data_len,
15901553 ri_flags,
15911554 &ro_datalen,
@@ -1595,7 +1558,6 @@ void WASI::SockRecv(const FunctionCallbackInfo<Value>& args) {
15951558 uvwasi_serdes_write_roflags_t (memory, ro_flags_ptr, ro_flags);
15961559 }
15971560
1598- free (ri_data);
15991561 args.GetReturnValue ().Set (err);
16001562}
16011563
@@ -1632,35 +1594,27 @@ void WASI::SockSend(const FunctionCallbackInfo<Value>& args) {
16321594 mem_size,
16331595 so_datalen_ptr,
16341596 UVWASI_SERDES_SIZE_size_t);
1635- uvwasi_ciovec_t * si_data = UncheckedCalloc<uvwasi_ciovec_t >(si_data_len);
1636-
1637- if (si_data == nullptr ) {
1638- args.GetReturnValue ().Set (UVWASI_ENOMEM);
1639- return ;
1640- }
1641-
1597+ std::vector<uvwasi_ciovec_t > si_data (si_data_len);
16421598 uvwasi_errno_t err = uvwasi_serdes_readv_ciovec_t (memory,
16431599 mem_size,
16441600 si_data_ptr,
1645- si_data,
1601+ si_data. data () ,
16461602 si_data_len);
16471603 if (err != UVWASI_ESUCCESS) {
1648- free (si_data);
16491604 args.GetReturnValue ().Set (err);
16501605 return ;
16511606 }
16521607
16531608 uvwasi_size_t so_datalen;
16541609 err = uvwasi_sock_send (&wasi->uvw_ ,
16551610 sock,
1656- si_data,
1611+ si_data. data () ,
16571612 si_data_len,
16581613 si_flags,
16591614 &so_datalen);
16601615 if (err == UVWASI_ESUCCESS)
16611616 uvwasi_serdes_write_size_t (memory, so_datalen_ptr, so_datalen);
16621617
1663- free (si_data);
16641618 args.GetReturnValue ().Set (err);
16651619}
16661620
0 commit comments