Hi! Request For Comments for bugfixes made to ext/interbase/ibase_query.c. I'm working on the PHP_5_3 branch.
I've been working on bugfixes for the following bugreports: #30690, InterBase: Resource handle from ibase_execute becomes invalid after return #32143, ibase_query() causes IB server crash with invalid DB and parameters #39397, invalid statement handle in Unknown on line 0 #39700, NUMERIC error when result precision are 7,8 or 12-14 #32143 is solved by checking for an empty querystring - if that's the case, an error is returned, and no attempt to prepare a query is made. #39700 is also quite easy to solve (solutions presented in comment section of bugreport) #30690 and #39397 are somewhat related as they both address problems with destruction of query and result resources. My bugfix for this is based on the fact, that there is a one-to-one relationship between a query resource and a result resource. Both resources share a common statement handle to the Interbase/Firebird API, and the idea behind the solution is to only drop this statement handle, when neither the query resource nor the result resource need it. I have therefore bound the two resources together with a pointer in each structure pointing at each other. These pointers are assigned a value when a result resource is created. Upon destruction of either, the pointer in the opposite structure is NULL'ed, indicating that this resource no longer exists. When the last of the two resources is destroyed, the pointer to the other resource is NULL, and then it is time to drop the statement handle in the API. In addition, before the statement handle is dropped, it is checked, that the database link is still valid (to prevent a Warning when destroying a query resource after the database link is closed). I have attached a unified diff for the changes made. I would appreciate any comments to the solutions chosen/made. Best regards Lars W begin 666 ibase_query_c-diff-u.txt M9&EF9B M=2 M<C$N,C,N,BXQ+C(N,3 @:6)A<V5?<75E<GDN8PHM+2T@:6)A M<V5?<75E<GDN8PDW($IU;B R,# W(# X.C4Y.C P("TP,# P"3$N,C,N,BXQ M+C(N,3 **RLK(&EB87-E7W%U97)Y+F,),2!.;W8@,C P-R R,CHP,#HT-R M M,# P, I 0" M-#DL-B K-#DL-R! 0 [EMAIL PROTECTED]'EP961E9B!S=')U8W0@>PH@"6EB M87-E7V1B7VQI;[EMAIL PROTECTED];FL["B ):6)A<V5?=')A;G,@*G1R86YS.PHK"7-T M<G5C="!?:6)?<75E<[EMAIL PROTECTED])Y.PH@"6ES8U]S=&UT7VAA;F1L92!S=&UT M.PH@"75N<VEG;F5D('-H;W)T('1Y<&4["B )=6YS:[EMAIL PROTECTED]<B!H87-? M;6]R95]R;W=S+"!S=&%T96UE;G1?='EP93L*0$ @[EMAIL PROTECTED]($! M"B ):6)A<V5?87)R87D@;W5T7V%R<F%Y6S%=.R O*B!L87-T(&UE;6)E<B J [EMAIL PROTECTED];'0["B *+71Y<&5D968@<W1R=6-T('L**W1Y<&5D M968@<W1R=6-T(%]I8E]Q=65R>2!["B ):6)A<V5?9&)?;&EN:R J;&EN:SL* M( EI8F%S95]T<F%N<R J=')A;G,["BL):6)A<V5?<F5S=6QT("IR97-U;'0[ M"B ):6YT(')E<W5L=%]R97-?:60["B ):7-C7W-T;71?:&%N9&QE('-T;70[ M"B )6%-13$1!("II;E]S<[EMAIL PROTECTED]<6QD83L*0$ @+3$Q-BPV("LQ M,[EMAIL PROTECTED],C(@0$ *('T*("\J('U]?2 J+PH@"BMS=&%T:6,@=F]I9"!?<&AP7VEB M87-E7V9R965?<W1M=%]H86YD;&4H:6)A<V5?9&)?;&EN:R J;&EN:RP@:7-C M7W-T;71?:&%N9&QE('-T;[EMAIL PROTECTED] O*B![>[EMAIL PROTECTED] M9B H<W1M="D@>PHK"0E)0D1%0E5'*")$<F]P<&EN9R!S=&%T96UE;G0@:&%N M9&QE("AF<F5E7W-T;71?:&%N9&QE*2XN+B(I.PHK"0DO*B!/;FQY(&9R964@ M<W1A=&5M96YT(&EF(&1B+6-O;FYE8W1I;VX@:7,@<W1I;&P@;W!E;B J+PHK M"0EC:&%R(&1B7VET96US6UT@/2![:7-C7VEN9F]?<&%G95]S:7IE?2P@<F5S M7V)U9ELT,%T["BL)"6EF("A354-#15-3(#T](&ES8U]D871A8F%S95]I;F9O M*$E"7U-405154RP@)FQI;FLM/FAA;F1L92P@"BL)"0D)"0D)<VEZ96]F*&1B [EMAIL PROTECTED]&)?:71E;7,L('-I>F5O9BAR97-?8G5F*2P@<F5S7V)U9BDI M('L**PD)"6EF("AI<V-?9'-Q;%]F<F5E7W-T871E;65N="A)0E]35$%455,L M("9S=&UT+"!$4U%,7V1R;W I*2!["BL)"0D)7W!H<%]I8F%S95]E<G)O<BA4 M4U)-3%-?0RD["BL)"0E]"BL)"7T**PE]"BM]"[EMAIL PROTECTED]@<W1A M=&EC('9O:[EMAIL PROTECTED]<%]I8F%S95]F<F5E7W)E<W5L="AZ96YD7W)S<F-?;&ES M=%]E;G1R>2 J<G-R8R!44U)-3%-?1$,I("\J('M[>R J+PH@>PH@"6EB87-E M7W)E<W5L=" J:6)?<F5S=6QT([EMAIL PROTECTED]&EB87-E7W)E<W5L=" J*2!R<W)C+3YP M='(["D! ("TQ,C,L.2 K,30Q+#$Q($! "B )24)$14)[EMAIL PROTECTED])E96EN9R!R M97-U;'[EMAIL PROTECTED]@9'1O<BXN+B(I.PH@"6EF("AI8E]R97-U;'0I('L*( D)7W!H M<%]I8F%S95]F<F5E7WAS<6QD82AI8E]R97-U;'0M/F]U=%]S<6QD82D["BT) M"6EF("AI8E]R97-U;'0M/G-T;70@)B8@:6)?<F5S=6QT+3YT>7!E("$]($58 M14-55$5?4D5354Q4*2!["BT)"0E)0D1%0E5'*")$<F]P<&EN9R!S=&%T96UE M;G0@:&%N9&QE("AF<F5E7W)E<W5L="!D=&]R*2XN+B(I.PHM"0D):7-C7V1S M<6Q?9G)E95]S=&%T96UE;G0H24)?4U1!5%53+" F:6)?<F5S=6QT+3YS=&UT M+"!$4U%,7V1R;W I.PHK"0EI9B H:6)?<F5S=6QT+3YQ=65R>2 A/2!.54Q, M*2!["BL)"0E)0D1%0E5'*")Q=65R>2!S=&EL;"[EMAIL PROTECTED]&]N)[EMAIL PROTECTED]')O M<"!S=&%T96UE;G0@:&%N9&QE(BD["BL)"0EI8E]R97-U;'0M/G%U97)Y+3YR M97-U;'0@/2!.54Q,.PDO*B!);F1I8V%T92!T;R!Q=65R>[EMAIL PROTECTED]&AA="!R97-U M;'0@:7,@<[EMAIL PROTECTED])?2!E;'-E('L**PD)"5]P:'!?:6)A<V5? M9G)E95]S=&UT7VAA;F1L92AI8E]R97-U;'0M/FQI;FLL(&EB7W)E<W5L="T^ M<W1M="!44U)-3%-?0T,I.PH@"0E]"B )"65F<F5E*&EB7W)E<W5L="D["B ) M?0I 0" M,30R+#$Q("LQ-C(L,[EMAIL PROTECTED] *( EI9B H:6)?<75E<GDM/F]U=%]S M<6QD82D@>PH@"0EE9G)E92AI8E]Q=65R>2T^;W5T7W-Q;&1A*3L*( E]"BT) M:[EMAIL PROTECTED]&EB7W%U97)Y+3YS=&UT*2!["BT)"4E"1$5"54<H(D1R;W!P:6YG('-T M871E;65N="!H86YD;&[EMAIL PROTECTED]&9R965?<75E<GDI+BXN(BD["BT)"6EF("AI<V-? M9'-Q;%]F<F5E7W-T871E;65N="A)0E]35$%455,L("9I8E]Q=65R>2T^<W1M M="[EMAIL PROTECTED]<F]P*2D@>PHM"0D)7W!H<%]I8F%S95]E<G)O<BA44U)-3%-? M0RD["BT)"7T**PEI9B H:6)?<75E<GDM/G)E<W5L=" A/2!.54Q,*2!["BL) M"4E"1$5"54<H(G)E<W5L="!S=&EL;"[EMAIL PROTECTED]&]N)[EMAIL PROTECTED]')O<"!S=&%T M96UE;G0@:&%N9&QE(BD["BL)"6EB7W%U97)Y+3YR97-U;'0M/G%U97)Y(#T@ M3E5,3#L)[EMAIL PROTECTED]:6-A=&[EMAIL PROTECTED]&\@<F5S=6QT+"!T:&%T('%U97)Y(&ES(')E M;&5A<V5D("HO"BL)?2!E;'-E('L**PD)7W!H<%]I8F%S95]F<F5E7W-T;71? M:&%N9&QE*&EB7W%U97)Y+3YL:6YK+"!I8E]Q=65R>2T^<W1M="!44U)-3%-? M0T,I.PH@"7T*( EI9B H:6)?<75E<GDM/FEN7V%R<F%Y*2!["B )"65F<F5E M*&EB7W%U97)Y+3YI;E]A<G)A>2D["D! ("TQ-C8L,[EMAIL PROTECTED]($! "B * M( EI9B H:6)?<75E<GD@([EMAIL PROTECTED],3"D@>PH@"0E)0D1%0E5'*")0<F5P87)I M;F<@=&[EMAIL PROTECTED])E92!Q=65R>2!B>2!D=&]R+BXN(BD["BT*( D)7W!H<%]I8F%S M95]F<F5E7W%U97)Y*&EB7W%U97)Y(%134DU,4U]#0RD["BT)"6EF("AI8E]Q M=65R>2T^<W1A=&5M96YT7W1Y<&4@(3T@:7-C7VEN9F]?<W%L7W-T;71?97AE M8U]P<F]C961U<F4I('L*+0D)"7IE;F1?;&ES=%]D96QE=&4H:6)?<75E<GDM M/G)E<W5L=%]R97-?:60I.PHM"0E]"B )"65F<F5E*&EB7W%U97)Y*3L*( E] M"B!]"D! ("TS,#(L.2 K,S$X+#$V($! "B )<W1A=&EC(&-H87(@:6YF;U]T M>7!E6UT@/2![:7-C7VEN9F]?<W%L7W-T;71?='EP97T["B )8VAA<B!R97-U M;'1;.%T["B **PDO*B!2971U<[EMAIL PROTECTED])3%5212P@:68@<75E<GES=')I;F<@ M:7,@96UP='[EMAIL PROTECTED] H*G%U97)Y(#T]("=<,"<I('L**PD)<&AP7V5R M<F]R7V1O8W)E9BA.54Q,(%134DU,[EMAIL PROTECTED]).24Y'+" B475E<GES M=')I;F<@96UP='DN(BD["BL)"7)E='5R;B!&04E,55)%.PHK"7T**PH@"6EB M7W%U97)Y+3YL:6YK(#T@;&EN:SL*( EI8E]Q=65R>2T^=')A;G,@/2!T<F%N M<SL*( EI8E]Q=65R>2T^<F5S=6QT7W)E<U]I9" ](# ["BL):6)?<75E<GDM M/G)E<W5L=" ]($Y53$P["B ):6)?<75E<GDM/G-T;70@/2!.54Q,.PH@"6EB M7W%U97)Y+3YI;E]A<G)A>2 ]($Y53$P["B ):6)?<75E<GDM/F]U=%]A<G)A M>2 ]($Y53$P["D! ("TY,CDL-R K.34R+#$P($! "B )"7)E<R ](&5M86QL M;V,H<VEZ96]F*&EB87-E7W)E<W5L="DK<VEZ96]F*&EB87-E7V%R<F%Y*2IM [EMAIL PROTECTED],"QI8E]Q=65R>2T^;W5T7V%R<F%Y7V-N="TQ*2D["B )"7)E<RT^;&EN M:R ](&EB7W%U97)Y+3YL:6YK.PH@"0ER97,M/G1R86YS(#T@:6)?<75E<GDM M/G1R86YS.PHM"0ER97,M/G-T;70@/2!I8E]Q=65R>2T^<W1M=#L@"BL)"7)E M<RT^<W1M=" ](&EB7W%U97)Y+3YS=&UT.PHK"0DO*B!I8E]R97-U;'[EMAIL PROTECTED] M(&EB7W%U97)Y('!O:6YT(&%T(&5A8V@@;W1H97(@=&\@:&%N9&QE(')E;&5A M<V4@;V8@<W1A=&5M96YT(&AA;F1L92!P<F]P97)L>2 J+PHK"0ER97,M/G%U M97)Y(#T@:6)?<75E<GD["BL)"6EB7W%U97)Y+3YR97-U;'0@/2!R97,["B ) M"7)E<RT^<W1A=&5M96YT7W1Y<&4@/2!I8E]Q=65R>2T^<W1A=&5M96YT7W1Y M<&4["B )"7)E<RT^:&%S7VUO<F5?<F]W<R ](#$["B *0$ @[EMAIL PROTECTED] K M,3,Q-"PR,R! 0 H@<W1A=&EC(&EN="!?<&AP7VEB87-E7W9A<E]Z=F%L*'IV [EMAIL PROTECTED];"[EMAIL PROTECTED]" J9&%T82P@:6YT('1Y<&4L(&EN="!L96XL("\J('M[ M>R J+PH@"6EN="!S8V%L92P@:6YT(&9L86<@5%-234Q37T1#*0H@>PHM"7-T M871I8R!)[EMAIL PROTECTED]<W0@<V-A;&5S6UT@/2![(#$L(#$P+" Q,# L M(#$P,# L(#$P,# P+" Q,# P,# L(#$P,# P,# L(#$P,# P,# P,"P@,3 P M,# P,# P,"P@"BT)"3$P,# P,# P,# L($Q,7TQ)5"@Q,# P,# P,# P,"DL M3$Q?3$E4*#$P,# P,# P,# P,"DL3$Q?3$E4*#$P,# P,# P,# P,# P*2Q, M3%],250H,3 P,# P,# P,# P,# P*2P*+0D)3$Q?3$E4*#$P,# P,# P,# P M,# P,# I+$Q,7TQ)5"@Q,# P,# P,# P,# P,# P*2Q,3%],250H,3 P,# P M,# P,# P,# P,# P,"[EMAIL PROTECTED]&%T:6,@25-#7TE.5#8T(&-O;G-T('-C M86QE<UM=(#T@>R Q+" Q,"P@,3 P+" Q,# P+" **PD),3 P,# L( HK"0DQ M,# P,# L( HK"0DQ,# P,# P+" **PD),3 P,# P,# L"BL)"3$P,# P,# P M,"P@"BL)"3$P,# P,# P,# L( HK"0E,3%],250H,3 P,# P,# P,# I+" * M*PD)3$Q?3$E4*#$P,# P,# P,# P,"DL"BL)"4Q,7TQ)5"@Q,# P,# P,# P M,# P*2P@"BL)"4Q,7TQ)5"@Q,# P,# P,# P,# P,"DL( HK"0E,3%],250H M,3 P,# P,# P,# P,# P*2P**PD)3$Q?3$E4*#$P,# P,# P,# P,# P,# I M+ HK"0E,3%],250H,3 P,# P,# P,# P,# P,# I+" **PD)3$Q?3$E4*#$P M,# P,# P,# P,# P,# P,"DL( HK"0E,3%],250H,3 P,# P,# P,# P,# P M,# P,"D**PE].PH@"B )<W=I=&-H("AT>7!E("[EMAIL PROTECTED]('L*( D)=6YS:6=N -960@<VAO<G0@;#L*"@`` ` end -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php