From c770117193e9081e8bcf51a069605b9955bfcc1f Mon Sep 17 00:00:00 2001 From: Mark Baker Date: Tue, 7 Aug 2012 23:44:35 +0100 Subject: [PATCH] Validation fix to mathematical matrix functions --- Classes/PHPExcel/Calculation/MathTrig.php | 4 ++++ ...umentation - Reading Spreadsheet Files.doc | Bin 167936 -> 167936 bytes 2 files changed, 4 insertions(+) diff --git a/Classes/PHPExcel/Calculation/MathTrig.php b/Classes/PHPExcel/Calculation/MathTrig.php index 35217b67..80e8a2d1 100644 --- a/Classes/PHPExcel/Calculation/MathTrig.php +++ b/Classes/PHPExcel/Calculation/MathTrig.php @@ -530,6 +530,7 @@ class PHPExcel_Calculation_MathTrig { $row = $maxColumn = 0; foreach($matrixValues as $matrixRow) { + if (!is_array($matrixRow)) { $matrixRow = array($matrixRow); } $column = 0; foreach($matrixRow as $matrixCell) { if ((is_string($matrixCell)) || ($matrixCell === null)) { @@ -571,6 +572,7 @@ class PHPExcel_Calculation_MathTrig { $row = $maxColumn = 0; foreach($matrixValues as $matrixRow) { + if (!is_array($matrixRow)) { $matrixRow = array($matrixRow); } $column = 0; foreach($matrixRow as $matrixCell) { if ((is_string($matrixCell)) || ($matrixCell === null)) { @@ -607,6 +609,7 @@ class PHPExcel_Calculation_MathTrig { $rowA = 0; foreach($matrixData1 as $matrixRow) { + if (!is_array($matrixRow)) { $matrixRow = array($matrixRow); } $columnA = 0; foreach($matrixRow as $matrixCell) { if ((is_string($matrixCell)) || ($matrixCell === null)) { @@ -621,6 +624,7 @@ class PHPExcel_Calculation_MathTrig { $matrixA = new PHPExcel_Shared_JAMA_Matrix($matrixAData); $rowB = 0; foreach($matrixData2 as $matrixRow) { + if (!is_array($matrixRow)) { $matrixRow = array($matrixRow); } $columnB = 0; foreach($matrixRow as $matrixCell) { if ((is_string($matrixCell)) || ($matrixCell === null)) { diff --git a/Documentation/PHPExcel User Documentation - Reading Spreadsheet Files.doc b/Documentation/PHPExcel User Documentation - Reading Spreadsheet Files.doc index 18d1ee9e07d9d891b3b39a39ecfa1416f12ba82b..206f2f22d04e4bcb905c62eac58bb586f9474965 100644 GIT binary patch delta 16182 zcmc)Rd0b6fvwv+&syi4z1QAr?X}ikYwz96RNa}Wx@naaO=C}1 ztt?3;wKAmgmwx%XjwBVuNKy?ccueq^;|9kKR4o+sYURaAlCUqbV%bg#)w0TURAUvb zl`rYG?W2+7 zKbO>e*5pM~y#Fm!)z@C%RL{yYbQZ{}>s6ZV z(>1AK5;Zc?+;v>Yq==D`6V2VmjgJVLXx_}n)vdX@zH!fBRYuGN_1&pPvRa;|s-tU6 zjcX0tI;wTct!j<9F4d?L>Jg_WMf9qwGXd&*%ZJKM7n?}Za(LF4BtKMdAW8agpc(gt zWKKIUSIJ6KRm4my_1YC7veK4h+d`Wop@UHvjZmnuA3CI26;9}at{90?m_puSkcsoS z0A03O4Nd4qn!*arum;Iki*-<&NnX-^A_s5~_UxqC**-saxa{Xnm%J{>&MY`mK(MtU zSS5lbzx>UM%Z`hp3K*)2R;^HVRGF*t6U|gHDre=d<jbx-?E%xFsJi~LmKrB7gHf+c0rnaomRFdA@x{z@oL+WA+DcDAD zw;jd!jNQ#8X%Et{o5u7NrRu(G_Q*=jDmz$h7tZ4XE};l-@D-939Ue?j4_@%b9L&W5 z9K>T3qAr^?Mi01Q3Sux9^RW!7W>UD6NF)iHu@z#!PvA1H;08WHlb2n;Fua;cC-$>K?8esPnDl#qPm)@ry818PrW#Gf~*vKDU!X08+e7+ zcmq>wRzoYaMmM;?9Ud5jAqc=4Bx4=cV>@=@1Ww{It{@i=@DTc~B{#`{e3-!;Ezk-! zutirm!v!MW127V!Fa}E?%3_=P?1oOVavM=mEZ!7}D4Lj`#S===h$0HdR7}Gh%*8yc zL?ZSgs5Lmav08+~EOF48kyk zU<4*%GI}`BD$oL@py&y>Rms*-un07l^b)8k+TYvxr!KVh8E~ zPN9z@=Rx#?btmc-rXmiPaRpb=PwlsLhpfzH^#>@ySCm4lJ*Pv|g$e3oI06xl2q^Iz z7GnugupX(%M*&{qHGZHBRoT7j&_g#kcaXd#Zz6p#7y$@G5XNCVCP3tG0ahUq$;f~v z&pzZ;F2wtwFZ>XT@?)tk z*hw`Nhx8J}VHJn;0rKz^&+r^2_zI)W^ztyq5CmW}!Vrh)ScrHeVGWXT1y_-U9K675 z6m_O+F?W(A3$%s}I-)bW!5Kd2hyECiNtleOScmmURiEA6N%qn#R{j-VKScE|^it@E z>G0@A(}EW|y3(~^K0=tLjKD~k_NGf!d!?ymWhzNr#3j7KYka|17?Yd{8o?4`6P@7x z%O(Pd55p*gA`CH@ij_!25;o#b?8iYIhL$s3jJ7j%9re%z&TxS%dSDQO5R5Q{tM~5n zk(J>@#~~UsF$;6B01L4UCy;?mT*7tS!X0Gc0rF9RLOek+exM9mE{ujz9eU7*0SsL@ zf!8BaA8p})4sb+I^g=)MM=(Ys3}X<5XiUH){E5xjk0UsTi?|GZrZWaGg&Azn7G1j6 z=Cnk_3w_WRV^jtQ-YCZqTZrGW6l;)zZP<=<9Klh1#3#s94+XTK4MWs{IU1oUtYD80 zaD=E@-Uz@@1YxeLWcIK6W=%Z{hNyR<&h3L*z4jn84K>ljIENc}jUv3oJA8+Z8-pfP zgC1(29xTxWR%nJ6Xo>c4h6}vlgZ>zZ;TVlj%yr|~%_9cz(<$leY3O|y>p+4bilmp$ol`j7+M!ACUeOCNx~ScnV#Y0tO>6JIK)uWI;1Q`OKD z^;G5=R;tBf7<@uc^(D*s=Xd!^f07@DKm;KQ$AWk0&UG>_L|fGnm5y*64ta z=maNpfjj!c4+Ag|gAss052}WW$Oet~gH{7VTNI{kf^e_kmu$_{(pnW>qL?jn^`)L0UDYQqRQYiO3-OA zgH6O^1>_+ND2Fnz8LA4r=%5;Rv0nLQg|v%(WMv{-NJ27Fkct94!V|p3dnnjWB^aO< z%wT~=Xo|6jKs2U9iN)A}?brb|_Tx0p;PyZ+X=V}0MlS9{Wau4!pbQcjs*GmPWVD#L zCbMnGpbdIK)#r|(I{&h{tQ4Pm!xw&t#&}G_bckX(fYT7gGXOJ?gw4ncAnW)DQ;Mzu z9MB%!;0zadVj?Pvml{AkbExDZT_AE5*Kq^+c!cjLgJKxxY1BboG=w=?qYb*LPhIUQ zd!@6eNYg!#{YOd=KaJpi5*9;eBqI@MkD?ai8@{9aXqp0+AsHtyUhQ?A=}b3LcfkZq z#4OB40v2NlZsHamA|LPZ5z=sq3pG&-M(~3_f)IjGj6pcoVLf(YA5IOY#hoRRiF}ly z3i;APZ-{*Q!XF_Rfha^{1`@CcOR*d)Z~+%_4-Zg?=XeQi%1Z~IUVbV7m-y5_ZgT1r z-_?WxYQYdj=!<^X2Q?1iH2%U_Wa0*HBNq?w6ff`*CHR8xa1N%R;f8+j#SjDpQwSr8 zj6xJ9U=m_+2#0YTnYe(vxQ7SGM*#|99YTFUTXaSjc*6%nF$`l6fk=$UAsh~|q(de0 z79Sx|lN8X0AxzOgWpO7@*?^ceY|$Q_&>3CO6{0TsA_yTEjRgE!KTlF0PvO`4x#nlR zOd&iDQ9q+YDGE%)Y|IUn)XKZR$=>6C`5`@wJfQ9vx>St7NZi2(7>9E{LKg%g0lRSs zPf#48%1C8wnPsP%$++@WmR|YzGLI1Iyetb@$%dtPEW%=>U>y$QD2_vBAF87U%+Uy~ z(FRWF24_Se8gZD8g^0%zEW>i_#XhL9Ka6WxB7=o^f)DtFGRS1G3bbH|I?xnEE8>pm zgsuoddEuz98$FUlnXk%+}qtU@AE@dwf&%Ih!+AD{M z*h!QhA`vo~B1Rhas{20VMo~N)SPB(3U=y}s2X^8pjw1^>xR0lJj#7L_RW_>&W7LN! znxYx(U=K%hh7;W33I7SwU}+$c01QPqA|UcK8%wbqt8fIGe0KhsKaZbz4F4sM(}^pQ ztj^B2;zk(J6s*HWY{FJ#BL@%h60cDPnWCuzEf}H>>Y^c9qBYu}J-pzJKIn%41R@B* zpr~D>7$S2q9|_ol^71F#2Q?1hAP(U$j^Y?j;H2u*qhSVe9e?`&O0)@fDU?qto4>CQ z+RN`Ejr|a5q(h`}1R{;&5NVvkX*?5Qd&?D&@FhDJ|f;HUG6Jl39pxG6F;^Pp7 zsZ;1?;)qPgJj}-~?1mcqaS+FF953(^Ur~x5D1#J3MTLp#%9FrK+&)&>JiTrra;-`E z0C7!9J5=4CnW)=7yDD3YgumfCG>MHPp(w=RC0^k*iqzIGZplg$qIR%H2RNcXd=Y_2 zXp)E~J_Rv|#Z-u7r(p$FA`N@79|v#^*YO-L@E^Mn!^!BCLbfcgI$Cu?n}+QDr3#5p zemb&I`I83fO|L&@yW2eI-h8VTO{6|`jDngNIx=Epn_u2-TgOCV-uJz^b(lWD# z+jiV5%B#8sPWo*6joN%P);k(YZcGCCF?)m*bxS~`253qzi;!o-bbnW=rI0~lh&Sv%cq_k9h};`_UO5%w6rHJUfMr4>)-JSLU(-!_vUQD^X z%X`bMu_N~l+@Lk0Vf_gu2Xe-QOvpY}f9cuwPv0)SIx79>i+sKFj|Mz_`@Q9^JM$9S zr!KhhIIza9203p=->!B(N&VWrq~6JUV@#&an-$t@gNNGqgR6D?0pq;CH`J8$Mhv`B zd0UwKxvcrkiXO!@Zg#i&+m5IHH0kvC(qW4$)p{$3U-vz5yk`IECbkxw<_fWlo`An~d+Tu4Ojd*md2E5ASc(y%RI&T-nz%RvF*E z#oFuN9NqM4LYwv9ieFtw*wf|v_oF?H-g^Dkb7aZVbFLebAM3pSU~JgVKe~yPW%LQ7 zGdj24$6sl@qQj{*9?B};*TtKDywZHs>M5p<9sfFz-#{+hs2ekV{569Z{e=rR7^O_v zkR=z5zuGatcW_Y84=q;5cIbV2%#+}L=U#_Q8+i6;Lha0qW0;9_e*n_i~Fl4Qo9~de?DXGt&XfOdln!)SFRh$5!|Ar+iCB2Kcmi zJF%B>&*L+D4La~-l{DSMJMUDVy)7P`xU_k1f?>Rw?~P->IkvG(FL7>vI(qQj2G<+6 z2uA3!d4-Ylo=tgM$-B;x(i%;cD3AK=(Mk_{w!p5MzEe8`qZ7xx57o|? z-MoHCu)Ch&q%HoLc3+O3zS7J$@>0Pg-S#Uk)*aq;_tMe`>+IyTIKRTn#S2}I>rC0# zdCFm(XSu`IroU~RZMjtc!;srYAAQ^1A+GGpqhrn1w>i=H+IAbm&<6=wZn^s(ygR)+ z&eNp+*5;P&Hz~u8HF@Ra+)(RN#|e)bpKac1aem*?ZEd2W{x~^GuU5cxS3kQ2QMz7n z4{o`-tX@{5iTmL>XEvDZ-n8r8^^%rxx5vKdzF?PWtsO(nvI>lxQr6q+wsqTn-86K9 zTgx>k2d&-}aACo$$USFv?w;GRUHTD&D~3Jh5BX!C!(PV~voBP;6PT8!Y-(q(GuR^S zeT$SY_Te2~1-dCBro7yE-}+p&y3ZS#6wDma<>u6DrCTFYR%BjGX*9TI{pw%yW8&|) z-ygi@RsE<=395^)>Q&1sd>B`|O`$>O54HMqTD_!Ib1N&4>wR;>?GuyD-bd#YpNsOI zm)W7p9*+k-gX^3gsoFC~ue84^d&HN^%H&-Ew(YCFi24-ty33Zd{@VR4?$lYeOi!=f z%DIw? z>nVeJdlzP9=Fe!bJ=LdMlYl8n@u|b}BfW>@dLBOO=yBxz;-pjA(U))Pj4t%w61wg} zok-n&N{iXCEf;DZ@w*tgqEkkTriE>KtsHM$cFp%jY1R8(c2>@*)FnW#+MO9GALcq4IxDv(k6FG_p54hrSroU* zd1IgUj)l`Ev>3GabB<}rmQD?mFQ={;GT*DaDmO!aZ)nX?N4F0hx9Vx!xIqR^w&Ch} zvHp_!rvLSeH-Fgo=6DOhE$r0>#|hbvhhvtVyV~kiR?ZS@JNua85%H(5cj$WFI5X+mh{865rcJDAdb~mK;*5ACKk&A(XpR8Rc74JWFyvPx1Pk4lvdB`ryZ&lZy2jiu|;^RLRs zW!-0$*XI1q+9X$2R$J=y?|9<+ zn{tR=M+H~ie{xE!c}s3t{&<~a&RDZ4=jP@W59WwRMZ{wixeg2p9XW@0VxHo}*w&f3 zZFj~h+z4yblX*!m2EgtNfIOLxaqU)I^Ay(>#q}+5F-TnX5R-l}p%wExF&`3xbupk7 z12M)H3aKdZ=q)+jR%RbcTe7S@+hkkf-iEmTCN9Q^xu}>sh_Rv=<%nTSQToQ)a)xZH ztl|drT655 z%Cb}XgZr|quyv@*c*d0J5oP3KMcG(0<)dtbe(dMUe&n5tDuv3%WTd)V8P=ZhjI0|76nDgTr?qQ%A z7k-d}9k_%d)N4rk4VBD#h|Ix3JchA3^H;=RE-WpWB_RzNxP-s)2HK4nUZOSH!vp?^ zL@bse5u0%iRV|qrzys5;P{~`J#!SjF56f{9*YF0WO_+*d4c22j9zvh0Bx<2}q%xE$ zH32@&n2;kJQ!x)KaR4RgK&$pZ3}zu2$}7By2LykE3(d|QM{x#b)YHbWhZBY)3?ERr zH9L!qNJ9oLBNwI6YQy{)9tcD@Qjrfm8;(EhY&rftY-u|PLL{bREwGJm?^vIrxm0y=eCc!br@4cvir&H}^u&5iW?uZ}=M@5z2{B+!1f-L6d{# zZgw#7@wkK>JjO>QZ?>N7Ek+^^(=ZboAnyMDjn{Ys%?)31v)2G-Xog`3L?ogRhv`Vb z3gqGep5qlt@f}KCZ;m~D;g4v{gt%Rs02NkZ12$qmG9Yf%7UKuXVBo`b5E#Q0%^_~z zMq>(o$1b#Xg0i51k4OP#b0tw_(R(JQgDr+ad0ys&N3PaR%a^YQuiC z0*pokW?&u;;55!coNNtXi0J+t{~1JPVh&#VQV-zi$C(Y`n21Bj#0})*5xzs=&p7}_ z0~qkYA3+GmI%FarS_A20;0|9*!wjqtcj_+SCA0^T5c*;vlCcq+uo?TH7|i(sb>WC^ zaE1%qFbT0ZjN>RkAzBS#bcVL*j7W@!GLE<3k%*l*fI}$48*~m}CM2Vm}YQP+g&>A*yf*ZzQJQiXRmS83J1}P~fB83oll0KjqRf5S03?Xh7-GR6f z^d28!973-M&5fTx;z1BMd!`^3aY(=-tin2^Vgq(#57L#qiP7R6WJ3%ApWxOAjvWe7 zgc6jY(nxX(6Ij3+y>SdT*q^~0)y;Co40bq#D=eAbGdS&{wuj>V#XV}dSchNvcC9MUwkx89QRr_ zP0xEJf2*v#QJ2F5F|bWR5k82x8CUPkE5?^L78T>mU6zzeV|EN;80gZJCT_)1ff&}6 zHLnUQpA?b^Y1L)TfUTeTfTQfh!^~4ok5dqKlYF(?3Wn759hh&>BSx zy^UX6Xk8jnc?%USOx&9t4$(y8A)4eals7>_(E>Fs?-Q-481rZh^Py=N;=Y}z_>Up( z$<-WNQNi01iVEEsV$LTfaH2kI>ao}VOU3L-JrwoP_h)^Kq|S+Y_yXniFTL?cIa^j5 z*PxSwEyV0iOn$}x@QI1U}p^=c3w23I82AQp|~H%PzrIwunbXTW~wGbG^mrs^0>rn z#WbBZpXK}izw_4if6SXEKmRQci91W=SdjxAk%LC*J-^7FenuZ<1~hbrIw*vAeMsEu ztxzgF;?kS=C~7GxaX%y7p|8TZimRr?#Zs&&m35P6%H_va9AEL0`P0NTp@L&x{u0-G zlG2a*D`FK|Tsg=uYn<3|kiy0(T4#Z=^!6{sbiP+6*^f1c&azfIpVNHIvR)0WxOudk^b^Qn>I|4FMW`2MhXld88%4;-RM zRq$`4jSmh}M9Z>m;`reTt4arlMkb~VS6G-YZE;%sk8dRwriMx)6k8FY*nXw-g5ipW zHB_mUD<6zhRF~zc>3ZW7!;Q4x20M#?4o;siM^QzVUD9LcDqhKM$`%#>G5nAJ940a8 ziga4KC|xG(D_!EQtgY08L7$)0k4HSSrIUO&KpH4Ll|*cSy{)s0gSD%pjkC3#okMqPM>{(^YnL7lHqNdN_HI4gY|^JLR?JiU7uU9I@&Et; delta 16238 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 GivI#Jp_Kvv