From 63edacbb5f05c50929d9d64f3fd68710569bbf1c Mon Sep 17 00:00:00 2001 From: UnlegitDqrk Date: Mon, 2 Mar 2026 15:28:31 +0100 Subject: [PATCH] Fixed issue: #51 --- .../java/org/luaj/vm2/LuaValue$None.class | Bin 1072 -> 1072 bytes .../src/main/java/org/luaj/vm2/LuaValue.class | Bin 27128 -> 27234 bytes core/src/main/java/org/luaj/vm2/LuaValue.java | 8 +++- .../vm2/libs/BaseLib$StringInputStream.class | Bin 1050 -> 1050 bytes .../org/luaj/vm2/libs/BaseLib$inext.class | Bin 637 -> 637 bytes .../org/luaj/vm2/libs/BaseLib$ipairs.class | Bin 797 -> 1091 bytes .../java/org/luaj/vm2/libs/BaseLib$next.class | Bin 635 -> 635 bytes .../org/luaj/vm2/libs/BaseLib$pairs.class | Bin 821 -> 1114 bytes .../main/java/org/luaj/vm2/libs/BaseLib.class | Bin 5158 -> 5158 bytes .../main/java/org/luaj/vm2/libs/BaseLib.java | 8 +++- .../test/java/org/luaj/vm2/FragmentsTest.java | 42 ++++++++++++++++++ 11 files changed, 55 insertions(+), 3 deletions(-) diff --git a/core/src/main/java/org/luaj/vm2/LuaValue$None.class b/core/src/main/java/org/luaj/vm2/LuaValue$None.class index afbf0c293f22719a720dc605e9f619f1dd4679ea..6770609fe6486f1b717e6b1549cf05d7efeea995 100644 GIT binary patch delta 55 zcmV-70LcHa2(SpSu>t{1ld=LS0Zxt``ld=LS0Z5bF0w)1UlLP}P0ZNlD11JGYlUD;Y0ZfyO14aQ& NlhXq_0Y{S#1R}sY4$=Ss diff --git a/core/src/main/java/org/luaj/vm2/LuaValue.class b/core/src/main/java/org/luaj/vm2/LuaValue.class index 50c3a02a823447c7e305948105a43493c85afcb8..c020ef9b0a3d6d24dfe3454c828b8ca424355fba 100644 GIT binary patch literal 27234 zcmbV#34B!5_5Zo|O)@W&HvwiqC1Du^Bus)RDlRA*AV4%ElmsxMhDjL6K#~c`1eaE= ztxK(T(biV9o3?IsqtFJ56|J?^Zg$nSzglZ;?V{FdTia^2{J-bEWnSL9gYnM?=560| z?z!ijd+xc*dwlPI`wtLNqtO>5Nk)_+7L`%Cpo#gxE%SSaGh65H=vy#wqjv7P7@1TNrIz>Gt{#*zX=>rZc~gV(xfOI zX3^nvgrEsUf~NjLc1w0pP-P*%GJBz203@qz(v+J(#j7oIL)DaJ$emn9Xc5>2#dul_6u)Kue;u)S_jqlyOD7E$z(=LD$hO*+L5(#iZqY(VOqe z^bSR7rN*}!SphLxL1(hVp2arSSY@3_t5CP$q3qzMOd*pXLDdO3`f4`&dj!p?ZPHMM zZzafJ!U+GA@lQFeV;1WL9i=N*$017V60jnOE2x_7d9Fq0(fJS$wN`o)w4%0z@k-n- zW$PGiq)e2$Eb69BaIv6=dF>>+gWG89WRZ8`oL% z5&9@A^R}qLKIyXR$W}mR=lXN3OZsV%e?Hz6HYnobC2s$F91D`oR zZP88a`H}8SZ!ZgYvqiViXCOV_=z|F+qodF(k>Q_X`W`;}0-xO~==^tSvJ%V>Rp=Kj z`V!p^8FT$R^4riA9aFnuY;2s~6IPXUr$u*hO(W3vv0Q^MbF-SuioDmN`?y<(w6wM~ z@}md1#9e}p4ph$N7m(Jy&7`}TbdR9M0IAz6FB&bmOL_>7U$bb0IachjbAi^)T+Tke z`*lI*j;);k|KcCyf^O#`AL6qEf|i$5|GTOiYyJ_7zR4~eS=!LtY|^)ogk%bZY~Mg3 zRmi8&q6=HW{Sj6ZbTJ$7~Y^-frWzvrY&G1Q##<@8^*q6!-BA0=jx$acHKgDD} zwdiN6rb}8{+f8~(P_2fpD_6K6HHi?4j~Zbr)tl|# zQs_zLH!FobW6^Ke*$v!g1^(8e=Q#S574j;iJUn!IYgwFzgQ&y+D72IkMY3 zyErI?G~vY4bGS->w&*Xcw@CY%wT*n^C5v8WA!XxxnA{TrY&FwPXI@ zE&2!FM{edMSxo%8MgLMYY*@C8ssCfq8yu>lwk}m*{jWuD(c6f4&bgZucuog#n+K0=f;tin5k|oX=qu-h}o7nN>MCnUBlP4mY8b;&bDvV zS)yJ6+Ez9*;Al(Ccdpl%f^*YNxgDlB4u#~@*$Fu7%JgqC1rk%ED?exoWTla=3;7H= zsWH^kYYJqfIN=UUoNkFT6vtJq%S^EZ5Bl=ljf!QKXygnh>NM?`SRqzMMH4z~aptIj ziQSw7$)7!1S)>^XBq%1DkuM4)qi1SzpK!VuzN2BwGPhb{HCw(+89jlKST)zN%@XZg zN7>xYsCAZD&t6>7o$njS3}*Y-k41+i&S6^1x$Ac6;#^CdXH#=OBswjzQDl&P74n<% z!$|O<|}W2q7*$RG?YMu=iQw5^(s3+>Xs>xzm2!UCkIk{ zREHseK)%*3u4n6<84w79I%9xEG4TnyFe*N&QQ$IVZ77hovKEoHb&H#r-G(J$ezq0C zZnHo-*DY=lG!4Ke&9K6OM#X0}BfEAULdL{r$iR<4f>$Px-~~GYH)Cl+QVkfAvoi4| zG=o}{r|#UrckUF_R5DE{mA#GbZQO$9u8WGhk=Ks$A*gY!Gq#M0yTmuO^gBT_v_&)w4rVU$ z%6Lxvp3C?H=N9kYSrId4mo8*=X0YHD^nySVRVMx-=(v&vH8qv4&r2}DsG{04xn542 zy%Js&&zj;D%+@rTOr;S|BH%) zmLw^H9R^Bn;RG_$spjn_jn;?#bWw#gWF#ufELqM;X=vuf=@TJcr^;6WH!WGg*z!)5 z`B%tFX+>q+l2vjX0-v__v*5z$hRZs6tO)IgWKl_@LUFGnCs;BelaT$K#xpF~Az_OHwnsPeptg(eNL^;Ef zM{+zcaBa$2X!4z%s?nSBC>W@-vp;)*b6v|S>0~!DWm=shPs^IJ9+`J%rx$9N>(Q1} zNn*vS#`cExh9%97rbMb(*4c@)+LXtsQzXHrJVBju;wX_Wg1<^4CC_7acB(W|@;oNa zkv>XfjeMI^Nr`z(+~#CbHaMrayVOP?PcbD70R-}BQ(^`Lr^u8|*<|0%Lk>h{+#T-k zGbJ)XoMK#LO4uXP*_qvL%J-|bMYKZaYTe6e!Wvd&S*0h;2qrf@udAB7u@$>Q~2Y~R4IZ9LZSTZNK zvf&%fZfkE?3h_k~Kj^h&9~(b{hQN}xH?_2*3A(f9%J+iIoF@H+lT5k@POyPz&|(Sj2zXuGqsL7=Y}x6RrheTvE{iTo;^psF$`6c zeCpJmBuC-7AvbpMDv2*Lsj2Zrb7A3f3{)>Fpj;&17`5QCyC;K109?WgqlNtD-h2kd z;(EDyY!`@23|{bfs3$*YKZea>g}lE&|LDR=N6>v}?+GdfhMkoRim`YZ~| z4-`C2MKDxAZTOz2vE#!-{H69n1%^|>0O&q}g2BTbkwh?bUWUkkTW*dcXknP|a%Y`G z!`OQS?SYN5A&ZFL0v;EE%)pfb*U}2oQ*b5JVkx5D4@!+;do-f)3 zx!$NN$n(0GlF#uw-F(06U^Y+J#dJI!A43sdv7hX8sUlVfNgnZCNb8M6u$S z9V~QWfKhvn&vD!;uLHNXLZ*A$s?30r1SGlM-t3kPQoz&vzUNSAc!WZi>KWOl==jy> zj7!($yePe1S4J=v+6?CcewYTntkeUHk$LemEOPh`BV(AD!H};PV^1E5mmCQ|MFWG` zq1?sjq<8=a(nx>yLJ-XlM>$9I(K>QRN!*Frlvs4mpf9#izL)YLKI6P6kNcQ>56!ZV zX6X$W!aa#=j*hW2dDpx{ExTAn%U(%xtCH485s}xM1-~_IRbDU(i4`Vk#iOCft6f(OVxlcd;mf@Et(WZvIZmlz2 zqcW8MgCS=W>To6>%fZ7wW|0SY2{9>wzb#5v{R ziG7M~A%pHs3{ISz7@K%!?mY~dc;+AK>4jP&z4qiH&n4p47QV%kh*0lPVX(VzAUx6L z)nYCNGKWwYo|fAK5baWk(_sYs$YZXhacxmTe<-j^&EaC09qiGZ30D`o?4f8PA{D4S4IkelP$jm&oyVu!j z7;DQ94|Zpl=Xl{M?rQUB);b0cEoh~yvb>KC9LHmNt$@as8GvGt9}JnsDF|`ml$0=y zQw2@$%51`__?BVbJA<34?1cl^VVK=ipW2cyFle!$gddceX%nA;xl0Wk^3h({lhs?wH7ciMnkXm`tnl z6=V~ho~rdAb8Wq0P>}+=aplJOF{9Ji7&S6j@iowS%qqqQJK=LSzGAuzGB3|`7xIG` zklf^tJPy$I;+4>IZ+2)_b3VUqcwmt)Ksi06@6IT~c1%-g;QonkFT{m}T#8($Emz1Q zvRF<17_O+9s4QAprEet!5B-Z4XoBj}x4eM%$CK4jBZnEKP${|^MvZN-?xCUR{B3na zW?+|wB%%{&vh0^zNyt2|q#VHYcHi|Nu7`Zr1zZpNu6N-20^jw8xW34DeKD@z>$`p* zt}pRjUyAF?eAn;C_2s_n58(QPzUwP+eWmaEDw@oz6p(!~Zx2>SY-~|SYz$II><{B3 z&*iHl=IPZD^YiM6DR~?#c#55`d3jJBv7pCC!Y(IujU_og@}#-Ck1a3iK6aO=BQ|xY zBQ|rWBld8pBerg+Bera)BX(-2qss?-i`4Zv=ZKvo>Kgkk_{dw9)DfGA)Dio1)N|}r zP)F=K;3Lm(t81*3t82_(t0U&A`N$g%ag6cww7QSkXdJ8M)joZGNK|2(8JpSR5!c}9 zR9s+J3c7#XZ-ejq#*U_sEX|+QtjeAGai6uaMWDK}w zOmSlg_8s}H1>&P)z-58^*cfozf&2IvaF?Nm*d_Ij@?8tW^<%(&8ui68?>q9l4Tu}Y zfcrA|Vg36Z`RxYc6Jx-AgK_ecK7JfR!uI_x^nzVtJ{)_Cj0FAQr$F2&KNZA<{N))S zJ}qy0N8BG#U+lT@a8h}xta>2ef3E|vQ{L?1Y!{c6_XltXL65C>L0nKii6$d&k)QE! zPPrBLjpiq7fcUKZoQHGD4e^_ea`6U)gPV&$&H9^=9-%1y#rIKiKbkY`3b3CKg3rq@ z1lfxq?j(h~)rV7N4B?glahoSbF%pc>)F8`MfPRr&4NQT&EOBHvrGm(AAip#wx8 z%RBJPfoKM_z+zUU6SGF>sP!SGT@K)#@~$u(Dm!X@sB#|z@NS6~;&E3iTIobR!-Fm( zKM&wN@?Ia@5$0$u_XhyHPy8edKSnG2BLLnnnJ7@z1zPSu25^`BiVyC{emuiNZucC3 zyX77q+>u>XHKdu>0Q@Sg55pH~g+U{cUy~zY_(?jr5eIOu+!uzQqJ>We@auAa7=Ef2 zj+P@Il-~%$7i-}Q6#O9vJ`)bcimXi6jnEldf(AejP>(~vJ)CMf>429T+#VkGA|U%N zw}(=`Yp}8(k>7OK`rumMH8uhGs2AsaaINneLx6uvJ{IP#^&}y1H>YfZy{%tBgZ4?VbH zhnNRxMMvFUYI+zp^W{4Rx92ClfanuO@9Mt={6~@-tJ|ubs_Nl?1Mnx3`@{fT-!lFK z;LqgG!*FfOK!zsdQ(oublf7AI)kvj+-|FM;#0))r5`a&8QQgb@g6$%LoEQ7Vs8O<=z7H)cKcz&AQ253CXz<>{!95Q2RmesNoeshd7NZCQc|q?sE523z4SKMcD3v4OkA{9EWZk(^c2)r&cY|Qo!&w&>;$2 zqoq3&ba;>H5Oi%?y44hszn0JVgyaaPgsiLIPwiTw^&rA42oBL)RuYINDD5kStksg8 zk8wc7p~%kGl4TXyp{mxQrRxJ7c4F&P!e)aB&e75hD>^rZ&vWcH$*mn?KTNJCy#$KD z>wHd;)8HuVD&^_AeY7Fa1w^h<*pE6`Zg6%Bs@X@KBa{uoKcV1mZHjQP&S~JE1spHm zIowk)5!=;F*VXT%-t~cjS_DZHzh>v4k95$nG|Pg>I1t3&&v^N47!U4{rVzxV_XnQi z9fz(We->WH|A4}CUc&g3az#9#jwB?L5sb?_|g`>Du6FTM+kgL3kUg^MHT)~77meADUw53I7EVO z2T~o%!XXmwfqpMx3*~xeVX6alqnXBHXz4=>BU2|uZllA~HB&d%PmOFGp=(Fzsw)g} z=fS_QMtuE8*=*H+;O)e>u`5ozfdQG2FUUXo?8WWfOefHNe=KOPvU$M$N&eYE`y7qY z0naI03D{r83g+bSMbCw2z-v_8soPCAAS`|=$h!|J#JjAHAPXFikJm)LfWhXSRPGGn z{52m?HII_4zBT=`Y12v>2VC{Tos0$BQz?v$`=(K*`KH94xz+fB% zJZN&q5O&gmj&*++9z9IK(Hkqcuiu6|-_YQX0rFMpro5wkf_*5cpC~49fp??aC_MX6 z2+vLKRf)b#$#WFi1?#8Ev9MN0(JPsTT%C@hfsOSvx2bae;grJ(E|)XGD`&r+>=8xw zPaT;mss!1yuo_;}cgR@F>{BuL)WeBKN9eJDmqcN8ev!|?PXU_om`r;jhY*qmM9}iuO(23u1?-`uzGsgk`hI|vh?B_>2!3+)K4vI$Zq=+K$^;u>@^;u=; zv(Df^_+Kxuo#@ae*!aKSNfo>4PpaEf%J#EJx!qpXlBi@&<8|w?3ow7Q0B;>ifG3my ze`0I<1voVz05T6(fMcCnsHXD!n@cF6$(6xkCGdNtW0!xOORE$pa`Jx;EqD1GWJ1dT zW*3(s5t5XVO5+gMMGg(Hh~w56=2u{xxXOpqmy1yv__3MUIk;RsKdc=Z(tsrut^+7e z1?!P1y@>Svl*r`B2>tbD8aFvI&%Sj#MU6WtJ~^VgrxALMz1X%8f2D%V8>zzllu}eB z8E?^4q(=s}c;Q72&)i-@hDQ2NxZJ-3ZQ8tp;rv%gH3PAOrLSQ4oDq662uI)pcQ=2V z4lpYvny$Heg#H%se!f*3yM2TxeshFd}9yed~`LB2v+mG z03WNZW{s|z*8+Z=7Cub}{|MkGXyG$-@Q(q0q82_&2frThleO?UI`}65U!;X|4-#z7 z6*mHYnif7!2j?Z=V?87J9pD&^18}T3PK#ckLEi=R30m~=8Z?&1@NEd!UHpEO=;j_DXpkej1}V;;z;(8AL?IPxWYUqQ!xo(_(I5B9q7 zpvE4JIa4v|-D0t>?PEm;A69X>`&(Q?*w15_VFPnr@YkU+(laVO-hQnw)<_=XDOr5M z$B}#h{XP#o7b3!mr7ajY|8*zLuJ>IWQMXSlM`|C%KtH-)oJF)xw5*@!4dd-3sT%u+ zD0Ui^#}-pOb~+_vXW%m)4KzQtR3%L&iMMDz&nZRtTR~3g=b>~?%<5F>PFl8;Cb~uL z7w@r)n;hY}V@RQ<8tfwZ^Me#Sm!h%rXk6@kO2s;hMWxjAm0@X3v;em5oZU%mowP2kZ+1g2SzW1wQ)F@@|9WO%h{6!Ur~ZM$);~LGKN8{ z5%<#J;);QiB{XD;AyG8qkk)lZTXZZ*vovA&V}Ms_6|+I7n5P&%R>fdG3%p&|eFw$7 z4nN1YTr`SNf`k=QSa@=obm2H(Zy}hH)gJU$Q`y;sUa`E02Fj2=u63`(btnuz;$ES7gk5abz|4ptAOMC zQjR>gIx)6KMY)a^6=TP%7^^OBrkE2>;b>@q*_{Z85FG*80VnExmp4;tQBj9+bhYrQRx3g?tTJk{%Bc2#stHi=*J*P znP40T{r#ffj=;fr8f%gwN;-8MBhir{n&>%_Zyi*usp!$S-6S^#SUy%5ElmFS+1TjS;zXlK`gI^ z;LBYOwg;@?U+9N-i_2j6RWK-e;+b$^zU)|~E+?`{kYB(oAF$0*&m)syr)XV5rgbSk zwtN}Qx87gu6jlE#jB2mc1&*oX;QQK6u*UqFTDI}EGwT|~0Bb^(XV{%;O-XvJDn;tJ zqJH}8gY;93sZOm=c6!;v>WvZc!JTS*mbm&(%q*Z8e7HCTgRl=jzC|&@MBjM4Mk0)9 z-u@e&eP+AFFn#e6o>UAjDOq0xe!4d^%JW8ym%$|}>uzlP!1vo6@s4wFRn>=>JhXPX z^^2*=Logth0qUs=Dyzn7e9!^*s8`R|%~H45f>L(4+Q=8-iRP zS5VBmIb0n9()+}XLFki8fSWYX;DV0zl!D&kKzYW1ofT72Q}&6SLB7AG3M1w1cH(50 z|CkSo&vfh+p9`X2V6-vAVSS_%|6`0!*X$L+6*KE)g-0M!6&!`H2L84n|9=2K)0pMp zXCfl9=_{GPNQ=GV_8`FnfGgk-)P)J+cr_9=(3X%EniAspN<0XT(v^^|(-9;U z0b;DGGuMIDuSCLvkw&Bx2x^VF4uLOj-NkY1%YiD#=O}pEf%|j{IBI-f5I-L~R!N(U-xbNvq#JM;N48MbXi?j3#m2(>HC8Efqq-?TS4%~R@# z&r>v?Umv-5-dR^f#H0wTWM@)5$|~`#h@672CsG{q-SG_+i=Rug;^#pb=Tm)rBQ1(& zXmz}c*2lZ4Groy3@y*m7@1eeUjtcRuN-5K*>}^<6q@oA$W(~G_I10fDlrSD$7Cs2- z)VUEVV>jef?Xgw$k5iOwgS5upALARO#S2sxABKf?P&|HtDoBk7<6sNL;TysZ%Qjr` zXmke0e|I#hwr_F5gI@1(M=R`*{sKNoWq4)fFHq1Y^N>h z@6dYNP^)2vCm?e(iv0dgIu-IyT~$AR+lYA5O+FXbkKf_D#8#4<$($6~iOqK6rybZ= zf;RQ@UFk=}XLf zX+``7YKz}UXU9K9=f*!x+4xS!Am-at&vppxf2i_J{=X?Cf8WrlTpbL; zp-Lrgb^8UfJa&)bejl}x5xn}&Z! zVwrqb+E}pbLGkMj9Mh2nd&O^X^;`$mFYehZo-f)&rJeD6X-fP)O2zMo7d}7>;&wk- zPLU}FhQnO`0jK`$abN=I&KLzI})a`<0KJ+>4RkQ^_T>1?b(^w??0gM4z zaQpc?X}m^Ceo~b2Xe7WCe+V)jplR`kX?FY(IxhZAT8Q%#@ZctZ}qhV{BZI zu8C}PH2DHLyeUeTzV$&{mp_A?KZh=#f-awijK5Iw*t(pcq&V7<;sB)JCe-6du>t4& z$CZNL3tKpE7bbc5I_lOVH@c(CA+w z?Mu+;E70iQs5$;BZNT}t@z;VHo!H`P)LZdyK}}e0p4

JzNVy7{)w@IwP8xw!M*E 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 delta 83 zcmV-Z0IdI-2$~463Ih$$00aTg00{xn01g4tlNSS!HPiqH0o4Er0oDKz0oMQ+0oVW^ p0oed10onj70owpG0o(vP0o?#Y0p0*g0p9>j0pS2v0pgR~13r$87T5p) diff --git a/core/src/main/java/org/luaj/vm2/libs/BaseLib$inext.class b/core/src/main/java/org/luaj/vm2/libs/BaseLib$inext.class index 8027c60915a2bee206a6079e9206eaf5d9e8b994..347d23722f629e07a5a1cabcb8764519b324de6e 100644 GIT binary patch delta 19 bcmey%@|R_U8WZEH$?8nTjB6%GGbsT8M}7u0 delta 19 bcmey%@|R_U8WZEP$?8nTj4LKbGbsT8M?MBD diff --git a/core/src/main/java/org/luaj/vm2/libs/BaseLib$ipairs.class b/core/src/main/java/org/luaj/vm2/libs/BaseLib$ipairs.class index b1cf8fba95682724e5769fa2c971fde8242da992..96d51952ed28540e78e3f5e21de3fb2ca4c40a59 100644 GIT binary patch delta 523 zcmZ{hO;1xn6o#L3DZS-#`7(el$d?GTw50_>v_%pUT{I~|EWyN;L(|mSQb@gZ+h5?K zxho8?Worm&2n%E4&OhLf;5TTTTb4jFnKyIhyw90)=EVOiVEz7g^#gd#degdY_*AX9 zD1^e1>_M%VsMOV`#Fzc0M7FMWRi$1?chSv5n;;>(n}4U*wotee93J;*CDW%HP6p|kY4TB-;g;mCV0K4UY>oM7cY z7V>3B?NthQ_qO9*>D~g}L~Q1Xx^pt?kJ~JeaC1_&Jldko5>MSfvgZDjP;XDpQTg(w zI&7QW0VCo|YkG4lYXe|toBYg4=@eq1n*6|N?;L{q7w&>rCoip5G z0JQ=LFf+&oGb3 kU0@&B5#mdO3EJ{rjXQxl8h(lRnr@X9+f+f6dBwXy}BOpeDAGiHspOvPo;T!fTVG zTSE_gg?Fz**API^^ioE(FufYW=rdnv(k#$Sr891bL?$NoS1h!tNPhb`bC?;)V=hV_ znliVfiKBiH2KWTS8H=kr%0rwZF(`?58 delta 224 zcmXYp!Ab&Q6h_beM@E?phSD5OXEH6PaqY%kixxdZixMF)TuJYt_Z`}}vB(M+K0x3L z^djz}i^hfT@O>QaPhsf?-@mIhaKqI!Sck#jaX1)F?jN3pLM^@3xzznqkuoQ`k+vTd zsZ!IejP%7_>)7>m>pIfb#Ovi!A=bHz_1UX7PZ8?&IK$aNkbNRqcS-)$n$XaNSH6o$ y{=F1$=Y`oj`EKrm!#9qEiQ~lwiIY_NkqqZK=cQMHYGU# diff --git a/core/src/main/java/org/luaj/vm2/libs/BaseLib.class b/core/src/main/java/org/luaj/vm2/libs/BaseLib.class index e913d9e49565a74f55fc0d74b57c7f73ade66ad3..2b24d2769c025ba4e60835080befd71ecf92b3d4 100644 GIT binary patch delta 92 zcmZ3cu}ovbWkJjB4E&5c7(^I%GN>@_W-wvg$6(2Lkimv=KZ70P0S0HFm>c6>1`nXP rFHk%HC>{h94`)0ynMdf9;Bf{P#uGr@Cm9qOPcbMnp5FXi$es}Ztc)3( delta 92 zcmZ3cu}ovbWkJi$4E&5+7(^JiGN>?aXE0&h#bC*}m%)Z{H-jDH9tLNim>c6x1`nXP rFHk%HC>{h94`Uo2 diff --git a/core/src/main/java/org/luaj/vm2/libs/BaseLib.java b/core/src/main/java/org/luaj/vm2/libs/BaseLib.java index c94bc753..9be315bd 100644 --- a/core/src/main/java/org/luaj/vm2/libs/BaseLib.java +++ b/core/src/main/java/org/luaj/vm2/libs/BaseLib.java @@ -399,7 +399,9 @@ public class BaseLib extends TwoArgFunction implements ResourceFinder { this.next = next; } public Varargs invoke(Varargs args) { - return varargsOf( next, args.checktable(1), NIL ); + LuaValue table = args.arg1(); + LuaValue h = table.metatag(PAIRS); + return h.isnil()? varargsOf(next, table.checktable(), NIL): h.invoke(table); } } @@ -407,7 +409,9 @@ public class BaseLib extends TwoArgFunction implements ResourceFinder { static final class ipairs extends VarArgFunction { inext inext = new inext(); public Varargs invoke(Varargs args) { - return varargsOf( inext, args.checktable(1), ZERO ); + LuaValue table = args.arg1(); + LuaValue h = table.metatag(IPAIRS); + return h.isnil()? varargsOf(inext, table.checktable(), ZERO): h.invoke(table); } } diff --git a/jse/src/test/java/org/luaj/vm2/FragmentsTest.java b/jse/src/test/java/org/luaj/vm2/FragmentsTest.java index c491c2cc..58c6c656 100644 --- a/jse/src/test/java/org/luaj/vm2/FragmentsTest.java +++ b/jse/src/test/java/org/luaj/vm2/FragmentsTest.java @@ -331,6 +331,48 @@ public class FragmentsTest extends TestSuite { } } + public void testPairsUsesMetatableOverride() { + runFragment( + LuaValue.varargsOf(new LuaValue[] { + LuaValue.valueOf("k"), + LuaValue.valueOf("v") + }), + "local t = setmetatable({}, {\n" + + " __pairs = function(self)\n" + + " local done = false\n" + + " return function()\n" + + " if done then return nil end\n" + + " done = true\n" + + " return 'k', 'v'\n" + + " end, self, nil\n" + + " end\n" + + "})\n" + + "for k, v in pairs(t) do\n" + + " return k, v\n" + + "end\n"); + } + + public void testIpairsUsesMetatableOverride() { + runFragment( + LuaValue.varargsOf(new LuaValue[] { + LuaValue.valueOf(7), + LuaValue.valueOf("x") + }), + "local t = setmetatable({}, {\n" + + " __ipairs = function(self)\n" + + " local done = false\n" + + " return function()\n" + + " if done then return nil end\n" + + " done = true\n" + + " return 7, 'x'\n" + + " end, self, 0\n" + + " end\n" + + "})\n" + + "for i, v in ipairs(t) do\n" + + " return i, v\n" + + "end\n"); + } + public void testTableMove() { runFragment( LuaValue.varargsOf(new LuaValue[] {