From 126bac7bd6c3d7672f2ed913e53fbba65698d58c Mon Sep 17 00:00:00 2001 From: Andrew Haley Date: Tue, 27 Apr 2010 17:28:08 +0000 Subject: [PATCH] CopyOnWriteArrayList.java: Fix for empty list. 2010-04-27 Andrew Haley * java/util/concurrent/CopyOnWriteArrayList.java: Fix for empty list. From-SVN: r158790 --- libjava/classpath/ChangeLog | 5 +++++ .../util/concurrent/CopyOnWriteArrayList.java | 7 ++++++- .../concurrent/CopyOnWriteArrayList$1.class | Bin 2314 -> 2314 bytes .../concurrent/CopyOnWriteArrayList$2.class | Bin 1350 -> 1350 bytes .../concurrent/CopyOnWriteArrayList$3.class | Bin 2115 -> 2115 bytes ...OnWriteArrayList$RandomAccessSubList.class | Bin 1081 -> 1081 bytes .../CopyOnWriteArrayList$SubList.class | Bin 4878 -> 4878 bytes .../concurrent/CopyOnWriteArrayList.class | Bin 11229 -> 11264 bytes 8 files changed, 11 insertions(+), 1 deletion(-) diff --git a/libjava/classpath/ChangeLog b/libjava/classpath/ChangeLog index f98d1c95b1e8..1db1158ff9a3 100644 --- a/libjava/classpath/ChangeLog +++ b/libjava/classpath/ChangeLog @@ -1,3 +1,8 @@ +2010-04-27 Andrew Haley + + * java/util/concurrent/CopyOnWriteArrayList.java: Fix for empty + list. + 2010-04-27 Andrew Haley * gnu/javax/print/ipp/IppResponse.java (parseAttributes): Handle diff --git a/libjava/classpath/java/util/concurrent/CopyOnWriteArrayList.java b/libjava/classpath/java/util/concurrent/CopyOnWriteArrayList.java index 6e4fb9a8ac91..020718292691 100644 --- a/libjava/classpath/java/util/concurrent/CopyOnWriteArrayList.java +++ b/libjava/classpath/java/util/concurrent/CopyOnWriteArrayList.java @@ -452,7 +452,12 @@ public class CopyOnWriteArrayList public synchronized boolean remove(Object element) { E[] snapshot = this.data; - E[] newData = (E[]) new Object[snapshot.length - 1]; + int len = snapshot.length; + + if (len == 0) + return false; + + E[] newData = (E[]) new Object[len - 1]; // search the element to remove while filling the backup array // this way we can run this method in O(n) diff --git a/libjava/classpath/lib/java/util/concurrent/CopyOnWriteArrayList$1.class b/libjava/classpath/lib/java/util/concurrent/CopyOnWriteArrayList$1.class index 2dba6818fd6a03953ff6ec07e3f7265bef82587f..a8f5b0acb70ed7c46066f234568cad84935dab23 100644 GIT binary patch delta 107 zcmeAY>Jr+pn3eY`11HOM1}>Hx3{osNCvRZ&WPCFD7poKFhsm~VnY{lP_*nikh_Ny- zD6le4-prQ7%g?~hD!{Jr+pn3eYe11HNR1}>J%3{ostCU0Q%WV}E57poKF>&doknY=$4_*i~1h_U=; zP+<8pc{5uQFBbzlD>nl_D-VMtEAM0_c27o$$vHq$dGa=PM@FN`KY(nn$tyVYCl_*< JF~$K|NdTVC9x(s_ diff --git a/libjava/classpath/lib/java/util/concurrent/CopyOnWriteArrayList$2.class b/libjava/classpath/lib/java/util/concurrent/CopyOnWriteArrayList$2.class index 03ab92a5ec1c40913c7650053f31eb9c9de6a35f..2ac9719071063f4612865ce253ed391511283cfb 100644 GIT binary patch delta 40 wcmX@cb&P9+3Jd2K22Q4L41!GGC+o7fGya}j%Hq$&%rN;Fiz6fJWDZt400NZ@Y5)KL delta 40 wcmX@cb&P9+3Jd3Z22Q4r41!FbChM}eGk%*~%Hq$&^n3C#7Dq;g$sDY901G<|O8@`> diff --git a/libjava/classpath/lib/java/util/concurrent/CopyOnWriteArrayList$3.class b/libjava/classpath/lib/java/util/concurrent/CopyOnWriteArrayList$3.class index 1f2e00af9baf1856c0ec34abd2c29e2248bc2353..c20c1fecf979a6c6306ed089d581fc5d6f392aae 100644 GIT binary patch delta 99 zcmX>sa9Ci2C@ZHf11GaSgCMiPWI0w(Mw7`e+4Uz+XEmA3$Hp`HI;%OO!(@K8curRa zc4jvQerAu!<{9 delta 99 zcmX>sa9Ci2C@ZH111GZdA)F2j z?97e~{LIdi%h~K0Jtl8si|6zOiunP>0w&9`+cAbtj%9b89K+5tc@>bC2s9@O0Fvz( AGXMYp diff --git a/libjava/classpath/lib/java/util/concurrent/CopyOnWriteArrayList$RandomAccessSubList.class b/libjava/classpath/lib/java/util/concurrent/CopyOnWriteArrayList$RandomAccessSubList.class index 83fd284ec57228fa27faa131df244e7903382687..df5d0783cd3f6e7adf05ec0c6d0de11297640179 100644 GIT binary patch delta 17 YcmdnVv6ExNK4#V$26ook$%mQC05*9A%>V!Z delta 17 YcmdnVv6ExNK4#W(26onp$%mQC05&rP!vFvP diff --git a/libjava/classpath/lib/java/util/concurrent/CopyOnWriteArrayList$SubList.class b/libjava/classpath/lib/java/util/concurrent/CopyOnWriteArrayList$SubList.class index 572a880ad34c81e7cc08c820a41382ddc35509ef..1265019707288804f991f99b39a122bedd389b33 100644 GIT binary patch delta 360 zcmWN}yGw#m9LDiS&I9p!e_zp3FltDO6fKE@D1yXtj=)KbE<}@?WE73j;Bp4(LeUgO zLo~cpYxl;Y%haUx2V_B8zv;m9{rpZfR*jw3jo>w?Zegf9nCc!O^?;~))PKf?@d~ec zljU7+IxA)!Zq<xkzpoRF)e{F8#8{pesCy&RCsgl>3j zGb1%CbwX-RYDS-U52FQHi?YthI*WGBqlXJfvw&eP>XPpwS{AV^q9S5N#Hxrj5$hOa zS!ew>oi!0#BDO{BppCoe=AMXsjPd~Etm(LUWZ0t45umL<%q7Q_&RKKD6Ub*6e9^X* F{|AC*Obq}4 delta 360 zcmWN|&nv@m9LMpOKJPW3eYfxS`T7y7iGwvZHaSpYek^g8+9FMyoV5J*56EGMef)^r zMGi)-IFKJZk{@@!;%Xe#!u#~D*YojC`_ulzcUf@`5*Lu-5=va5Qe49)^7==v$a|RL zftN?U>R3|GaEcdhuL$vth&R1&gmugqR-ar7T)wyzxO{V&H$@S4@e4!z!4gFscAmD_ zU?)4=R0=OSP)|-o$c1(?(aE=)JQyH_A+iuB8YpddWdgj#AwkRtpU z&>yaxigNAY+RHV@HL4HHU0;IN5ne}m9YYNz(Lm#9r35-?LQlI-d?^+)EM{5Eu~=ZS z$YL37l+yj4d|igc8jE!n8>pg91Za!JHo9mBeU#B5wI{Qzj!{Ng{iLQ!&h(%)DQ`e@ L3rTl6XT|>kZ6r>4 diff --git a/libjava/classpath/lib/java/util/concurrent/CopyOnWriteArrayList.class b/libjava/classpath/lib/java/util/concurrent/CopyOnWriteArrayList.class index 0e7bd0f5aee8e5df8ffeefad416d36fad3471e43..97d63d83b3f3b3325a29099aca211ed91d6361b8 100644 GIT binary patch delta 2179 zcmZ8idstLu8vniDIcKhCV456cxXcVA;LMr95iAl?63vo*!hIB#6dyJWFpQ`OvwG^W z-L?H|3+=0(?4pteY1CrcfU=@l$!3;XX;&*R-M7t(GP82uGpx8z=a2J#-*@Kwy}$SO zUgk*k-BQr~b}Y0!p`coPd&HQmur>Oeb=>UbE(1SMD&bl_fO zSn-4WTA%71!YLE#C&G9W%34tonPei;VhCeP^(r|5?gH*EXH=WLCxo%CaAUrgUek^*f-Hs-jp^iY;A;L}Ok{ zQ6CnphQn(q*1F*LT72rj6VQFC*J6IGT45nx4RoA6?A0DKL1JD_y@o$)u>r4Euh#cr zvEfsnN2c1%9u;H*%P||H0NMkM24SODpwnKY&_1Nm0r==30`w*fI)rg_7=`pMO6WaI z<@2lP2xifTsG^UtkdES7wvBWQ&2$2OhMzGU76J(JjswIxl!2h332Sj71Z-$TNe3n| zlQdk7zwx08ALil-KGTqe@u=mM1vz|O=c^`203o(HSTE0H&!!D>roXcMd)R3RPWlmU zI>n@aLKgkZ#Lr-Y0Lld6a-pD-_tnCJg~EzjVMl{-;6|ZisYsC@_@mw@*}uYGYtV@< zW)fgdPsyx6Ic=1+fqdE|?+L`%<8y(E$syQ9E?goHsUnO~B7$rYMNq_Wkr;=|L>x1C zJzHFi`Jxy#Vj>oa5;TiT(JCg(iNUCI*jo^D*hfpSoVsOC(9ovCCa#bl1;-XYgIO#Q zr-t9pBAsmwv*U2!G|W;Nh$irlku7k+lMJkItSaZ zeS~hmY#;Mb`C3@TIyglKE4&^au>t9#6B(k5X>UZS*o0}kt`w}1cotP+Gv{;*8pT%J zED~5I`ebA7#Yu%#6f&%U>i%xhI2EWZBd6a*{X+WVm$>cwi=?@cT_Lc5H=5?__Sd}iGxC!i& zEAz81I0_+-G3yh|_!zVORPM+hO|Q#C`6c1~NzCc&&1^n#R&G7^186!{uN_; zzGYn59?o9={Z8WrSXU#ZA480r)r%i{`f+-AdFH$izd6j5HC!EQk*lm@{0>Z1*5fi| z1OA{qnM`JoWdcvHa|3TKe&Ok5Mn4z7@=E;Q95a6v;?cy1zu_!+Lh-|yq~R<+&QN9+ zqtOH@$!?z<%}S6>DeHneY93@4B}kV|ku2Z6P_=eAw3SHJBt~fuz|Ypu9+Yb$qn)Yb zW(p2=-63~H!j7aP3p*tFU1UZf&pGWW*tLzgK-+{g?P&zrhPCcwL`ITCWF(>prONA# tIi8oyxg*TKkKrEDdgMXl3Z4n+(ayjDJ~f}?!v;efRSX$8&9(rJ{{l>#&g1|9 delta 2175 zcmZ8i3vg8B75>h-_wHt&SvG89$Yyu*+H7_=hJf-25=aF~Is`>thA0wEifNf3R4caQ zq>PSZ1+>mTQzcRo5D1p2q2O+4N&u}Oh=K(am55^P!&a%H6zhYYdow1EyEFHk|Nj3u z=R448dO8+SI(NDw2VBWRZ-_ZTUrWl@pKPT{j-bd+MNT481SD%3Wif zIEN2RcYjlr?iHbb;Uhc#P4NAs@#l>d%NkpkR?NL~WlQT)H$KLBwclOr|Ae4Lsv}OU z!zepGBTRnOSEjtgS6uV8<7PO7ldA$EjVyMb+(@A0|SU6`^H$ zMeTLdSKZcp$DJ+9Tb-nlVJBThykWAbsovZSjWXQiAg5~dj&y0{cH?XE5CUqok)@{k zboH3GNY|D%x9;loR(RVoVUs`57~hS&x@5oJv=`cJ9;a*Lj4qTWk^y5(FBYwbGhmF< zyATW*<^7xCDi0Xu*4+CI60LvJ<5YBC?V^&?)Z-25v$JvcT|Q9v%=)gAa4C3D-cE)s;H6 zX&OeM$O3Fuq0kNVq*@WGtN9oXIu93pA}~KiE?q#7K1Y}?Vk~`$YWfP(=o{3@dLa{T zV#Z?D(aZ*xvmJM_LtPFf0$VHqK{Q}1wh4eRZbX-w60V``YIQhDPpR$Uq(nRwuAQ6@ z2Z!O|2r{_{Be@v)97TjnaTS+g3db>1^c#3I>bVjPJQla|RanO3u#zXJhDgFS7%d`+ zcd17sHMB#Wh{TPl$lw}PUs^JuKn81$lxC!4%Xk`Bh-{Dou}D|kWI}%;g=dCaW-|-K zbJQ&blRPq$L#8`bS3z%06WrX4VqS^_-;N4yK_&kb<9QjXxmCcf#4P?97VupH_-@?6 zt8kCV`}mhod@t5>o9Zk~&>z&%!hG7LJ}ewhyH#OPtnIml-(ihkss?^Ya##Z=uZ54- zSp>+oQ2U1n;78gbfZ5mKJ+rTXxi?i(DL^mw3?=bLGk=;cl(Ea1dlGwugqR#`SBHz* zYT9AvC*a}@(vXeta|f>AO&GTPo_aT$L$9by(TTBFEn-fWkmh(g`f#j1p2ln6uiAOxbZO;DoEqxr>z3gUWNjMS z;#vxCe9ubrtDU8#9{C0gS-qt`C@q@)b{Z-#h2Q!IQaEe&LG%>b)7ZGL59jLRd1?H0 z*q4=rRt&dRfQXd0rM>nkDSHmgDkLrXX<2 zeeYB6m&Ke`ARFZRRDt-+%FSZ@Bpk*Tj4-w$+t`MP$e7UIyzt`|h_a!1FC(vdI6lw+ qg2^nlJ}}lW89UTx@fp;kCMC9okIA0-J2xnBL9$9>6fTJ@hx7mV!p`IX