From b2dc564628674c6771e3393d4ee70559314e64c3 Mon Sep 17 00:00:00 2001 From: Nathan Adams Date: Fri, 4 Sep 2020 14:13:21 +0200 Subject: [PATCH] avm1: Fix String.lastIndexOf(undefined) --- core/src/avm1/globals/string.rs | 2 +- .../tests/swfs/avm1/string_methods/output.txt | 6 ++++++ core/tests/swfs/avm1/string_methods/test.fla | Bin 9146 -> 9161 bytes core/tests/swfs/avm1/string_methods/test.swf | Bin 4745 -> 4763 bytes 4 files changed, 7 insertions(+), 1 deletion(-) diff --git a/core/src/avm1/globals/string.rs b/core/src/avm1/globals/string.rs index 2ce1fa5ce..019df5d3d 100644 --- a/core/src/avm1/globals/string.rs +++ b/core/src/avm1/globals/string.rs @@ -319,7 +319,7 @@ fn last_index_of<'gc>( .encode_utf16() .collect::>(); let pattern = match args.get(0) { - None | Some(Value::Undefined) => return Ok(Value::Undefined), + None => return Ok(Value::Undefined), Some(s) => s .clone() .coerce_to_string(activation)? diff --git a/core/tests/swfs/avm1/string_methods/output.txt b/core/tests/swfs/avm1/string_methods/output.txt index d448abc81..3fe9700c9 100644 --- a/core/tests/swfs/avm1/string_methods/output.txt +++ b/core/tests/swfs/avm1/string_methods/output.txt @@ -140,6 +140,12 @@ undefined // s.lastIndexOf(null) 17 +// s.lastIndexOf(undefined) +-1 + +// "hello undefined hi".lastIndexOf(undefined) +6 + // slice // s.slice(1, 4) ell diff --git a/core/tests/swfs/avm1/string_methods/test.fla b/core/tests/swfs/avm1/string_methods/test.fla index 64037e16c21735925ce26a5fdd9ca3920d919c9d..7d071e95ff9dd7118e79757cd884ded2292a5beb 100644 GIT binary patch delta 5233 zcmV-%6prh=ohosx?q*5i3qV|>0zVG|K zV&?+@g6^sz0Z{P!!5?6L!hobKQ6fOnPF!|by5BkH-urDA5Px;=eEIO}FWq&oUbq^4 zjyEqF8ofVzrK>({SuzOK0G_B<;oFD)%A`Tf@q9@RZ}y{NrW-{|$# zHrBbE8P++Y(R;J@iTknZW}W**$(yGQDPB#9(^2=z<1y#>uKtCqp}x^|*I8yVpEmr~ zqWzpHP2;(qOQI)2D#W!R5ue{el=SzjxL7ypI}dUw?jQ>OZY*@S2-%biMICs&h5E zzItNruKsC#3SXXH-j5Go`b<6Vx8|1*-0qj>oGZ3(YoEEicEq?^u2to&!cGQlYH&O3>&yA-TT82wVqT~ zeCK}T^VBy!bKG_O)pz#w&m2!*HKwPz_POJ)4u6l!_sY}gaK1M?fA09(-+un-C!c;& zQsQWEH9qq_|MU}|r?$>@&3QiJ{QT$d2R}0holo6v=go}ivkO!9@aJjCEXoD`9BzyK z`^;#Um45cPB}ti6!pg4NtdPo{!vB4$yEXOixvQbUa=k@TvKY?Hv}tG6J+JlL^JP0L zGk9Q+&+Q0hmV`2ULWL!v!k$oRNvO0Z zR9ORaWvZ&|PK!fX|{Oyt~+b+wlxmmW!@vg78wl=kKv zY1lRI=bv4g`TgkCoV+kycclJW)6Q(RWPeMRJ-qQ%Lql5fmD!q}nvM6#bw}y-?Cx;g zk!pmNvPF|^ef!koe({AFiZ9GwnC;>0ap%>=XQXdtW3JVdX0Ol&QH)Soc|~PaA*~Fk z7`f`I>ayxWav4xDayP20Dys_WouP^mEPeB&rnIb(;2EkILFX^;ed#QumjM+c_kT_8 zH-*GfkYc0?=@cbWW9D~Fnfb50aK4=*ixn;{R=4zA_HtF7ohm8Z#aZ*&rP0r>b}ft3 z=Ckt-n&Dh4y;A14LL3! z#kIAyK9|>b|KY>bf97|ob1FB#&&b!DDby9eT(RYD=Q7~BqcR^qWiBj{dXC8}a`i#S zTIOnAS=fu%PUg9&A~j?Fjb#A~s;1(QUoMR(EM$|4_OLvXc9G8;byK{`j(?Xj<)_+5 zx?q&8d3gx-K0o*MDd6wRezueQqci=UbP*ND^ZGwJ^Uq;Hv0~UhUpCZweP8AF zjjZ91Y8_d8%l2Vm&vkAt$P9j2A)z#;NU^JFW(O)x?rLMP!4xN!)i(-?=It?7gxs9B zMHMG#lmGdl1*G$(Ou=+9Cx5EQ$4{9HOO)q}XvSVxBwqm2=KK=&>;lC6K`x@XWy6aI z@ITb#3eIKO=!%^_-Risz^>vrtq0rl&S{+423uN1PM^y* z>`J(C{*ASm9oAOdQh&uBUPR*O0T%F2e#NVp0%Eqox>DXbuecdledDv-LQH-5@)5OY z(rnA|+-A3(G{Babmu6j>XO?_Ky8=D8A9@{Id2x^U`cDJ@33ZSZJnfg=KApOY;bqe*AiGoWIyw zDyPjKEq*0&EN8gDeDpLI$z(Z0+Wb-Cb_w!v`BA_d|Cl4JHH((I^!DR(KXAWxdA_Li zUU~=08qRrDGk@RMAAOhkC4ns1rKb`*$OR%Lbg!Yo@#^JEm#5A&rax-&W^3I0i)m|`m2Bcj|X3W^YGjM{I5sf{pPp7`~83akI*DE3w|LWvuY|^0K@tugjbAw!A0r%ZKu@d?J%FEweHo zZHoG%Ez#C!d$cp!9qornD;^N~hAL zbbl*7O0UwV^eY2ONFkI#Wk?xTMwC%yOc_@ulu2bunO0_$S!GU{R~D2-Wl339R+Lp` zO<7kqluczz*;aPcS#@4rRF~CNbzR+5x7A&BUp-WhRZ^u@R^_!OtyAmPdbNHnqz!7r z+Nd_JO={EHtTwMLYRlTHwytez+uE+SuYVnC#~P{88msY%=0qUTmgq|KCqjwA#BgFX zF`k%AOeba&^NGd8a$+^Hp4d!mCw3G2iNnNkf;`0-KYs`R zJp2prFT%eB|1$h5@UOzZ2LC$z8}M(!zXks`{5$aP!oLUqKKuvpAHshG|1tb0@RRUU z@YC=!@U!r9@bmD85oki7838{60R&nQ2!d<^=?B>YvK3@I$WD;mAbUafgA9Qj1UU?H z6y!L_Ns!YZXF<+`Tm-ocauwt{$bU_c+aPyA?t?r8c?^;SNrPlT@}QbP`9ZaSY6aB} zsuNTbBv!LfeFM?hMy$X6A^d{(S(0{w2_dy?m zJ_b#Kra`lyc`!|2{9szZw1Q~|(+Q>u!0)I<`Wx%pvIj}s~Ft~Pb9pE~_b%E;!*8^@0+yuBOa5Lam z!L5N?2e$!k6WkWKZE!o_+rf8$?*!ikz8icG_+IdR;77rafgcAy0e%wv6!>ZIGvHUj zuYq3&zX5&|{1*6a@TLw4o&ryUXTY-vwyhFo`gQFpV&SFl)3d8!hWb%Z3r0HG*?SaNY*lo6th5MzW`Bg7dY-Ux*aqRAkd4Z?2_0fT5Uh@e5V z8bq5xv>QZ+L3A2Kmw!QY8$^#m^cqB8lATMk^GS9g$u1_@r6jwYWLJ{xYLZ<`vg=89 zBgt+i*{vkIon&{C>~50XOS1b(_8`d~CfTDTdz@rXk}R2IsU%C=9+p=gh<)zgq)yG; zGy8n_>TeQeAIIk)`x840l6zt|q*i$4#J>0(=y9F-Wb^EK{eSm=Zg|n?e)+#1ukY0l zuiyOm7hzVI6Xt~lVNqBTmW35zRag_&g$-d-*b=sd9bs446ZVAz;ZQgdjs;Sn1X^GO zR^S9)2#d{PKn#j)Vu#oz_K1DrfJlf#;)pmVPKZ>mO$A3JL59A}6k{Owk!_nqwAR3Ie zMLVKh(Vl2ubRbGZhoU3VvFJo}DmoKgh%QA}qHEEO=vH(mx)(ioOS~O?JN$O!?bzFi zx3g~--mbn~d%N>?|LxIFO+N*GYX7P8r>>tu{}+sH#6a-gtj}AU+fyj*rDB z;#2XN_*{G;z7$`Huf;dwTk)OvZhSAkA3sudl|5x&IZzIjBjs2*QAmYSXoXQ&g;RJX ztTw65s$UJLEoxA0Rom2dwL|SxyVP#AN9|Sn)RXWD9Dk=Ss7vaKx~6WZTk4Lwryi(B z>WNCJjLNBDty$~RdbB=mKqIsvZA2T>CbTJSMw`AW6( z*YvLWo&R0nUCX=RJM$cE1{nZp9;c&aasVU&atP!I$T5%;Ag4gifSd!l z0CEZB3dl8(8z8qp?tt6_c>wYV@L_nu=`*Sz#f7<0(%Vh1Y8riW`A&gZ~<^F;DX==z!Bhvz>R>L1vdw79^3-B zMQ}^tmcgxn+Xc4=ZXetMxI=J9;EutWY9u%c91V^E$AaU)H-T>k?*|_M-vT}ez7>2M z_5T0Y3|V4*Wd$1@MdDm%uNBUje@heh>Tscpl*Z!u<#jAb&iI z@EpQR2p<^1T_d<>1ow@g`Sqa@JTijEM)1T4l17j+g0vB2j38?SIU~p$LG#G$H;4g) z2pI%n5Q7FWWDvs!F=7y-1~Fz3;|4Kd5R(QmWf0Q_F=G(31~F$4^9HeC5Q_$}WDv^+ zv0@Ob2Cr8T8Nv=D|^(498B-fYZ`jgy1 zk_#m{BFPOVxuGOCoa9E5+-Q;;OLF5EzgX!1Ggi#sJBazEfs$%o%5xZ`SY zrEcALOA6n7D0zSNA@4nklDrow(jw^#92U1gN-VB{qzUgYlAPZ;DapBXa)0MrPkp1$ z<$2`t`RW^=UF_%1%U6#Z>b=i@UGMd|JwIL+|2AX$%IA9FIKw@v|BLIcv+`DDmGk{j zYWlm*vZ~v+%galvZ&x}?idHGFv{os{0l@=c(dzJEAHN~sks;;(F zsVu!!e56g4+^ox}RDHl&s>^d@lu;@BfVEUrS+Aw+R?P>*$X2DY^q;YoiVw*bJC)K8 zicz(-ikZ^YA5e`IHX2pM*J4GrMJ;Aj%09p=)v5c6mMYm1x>J(VjSbTc{{7|8U;IB% zO9KRxZz3AAmJ~J&1Si-%X_L?(D+LY!3;-3fAv^&J`Rj~b-V*=-3ObWUB258@lawMt r0lt&hB0vG1lNci<1Si-%X_G-C76HwZSR+6IS(BL~8wQvm00000n-e<^ delta 5213 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 diff --git a/core/tests/swfs/avm1/string_methods/test.swf b/core/tests/swfs/avm1/string_methods/test.swf index 97ba2f89ab756315e6299fc28b8b368c4ed215f6..46482e183bc291caca3380f7dbab48af3ce49346 100644 GIT binary patch delta 4501 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 O