@@ -1741,11 +1741,14 @@ impl Lua {
17411741 Ok ( 2 )
17421742 }
17431743 Poll :: Ready ( results) => {
1744- let results = lua. create_sequence_from ( results?) ?;
1745- check_stack ( state, 2 ) ?;
1744+ let results = results?;
1745+ let nresults = results. len ( ) as Integer ;
1746+ let results = lua. create_sequence_from ( results) ?;
1747+ check_stack ( state, 3 ) ?;
17461748 ffi:: lua_pushboolean ( state, 1 ) ;
17471749 lua. push_value ( Value :: Table ( results) ) ?;
1748- Ok ( 2 )
1750+ lua. push_value ( Value :: Integer ( nresults) ) ?;
1751+ Ok ( 3 )
17491752 }
17501753 }
17511754 } )
@@ -1772,9 +1775,10 @@ impl Lua {
17721775 env. set ( "yield" , coroutine. get :: < _ , Function > ( "yield" ) ?) ?;
17731776 env. set (
17741777 "unpack" ,
1775- self . create_function ( |_, tbl : Table | {
1778+ self . create_function ( |_, ( tbl, len ) : ( Table , Integer ) | {
17761779 Ok ( MultiValue :: from_vec (
1777- tbl. sequence_values ( ) . collect :: < Result < Vec < Value > > > ( ) ?,
1780+ tbl. raw_sequence_values_by_len ( Some ( len) )
1781+ . collect :: < Result < Vec < Value > > > ( ) ?,
17781782 ) )
17791783 } ) ?,
17801784 ) ?;
@@ -1785,9 +1789,9 @@ impl Lua {
17851789 poll = get_poll(...)
17861790 local poll, yield, unpack = poll, yield, unpack
17871791 while true do
1788- ready, res = poll()
1792+ local ready, res, nres = poll()
17891793 if ready then
1790- return unpack(res)
1794+ return unpack(res, nres )
17911795 end
17921796 yield(res)
17931797 end
0 commit comments