From: <di...@us...> - 2010-11-08 09:14:19
|
Revision: 51861 http://firebird.svn.sourceforge.net/firebird/?rev=51861&view=rev Author: dimitr Date: 2010-11-08 09:14:13 +0000 (Mon, 08 Nov 2010) Log Message: ----------- Fixed CORE-3218: Statement cancellation request might be silently ignored by the currently running SQL code. Modified Paths: -------------- firebird/branches/B2_1_Release/src/jrd/jrd.cpp Modified: firebird/branches/B2_1_Release/src/jrd/jrd.cpp =================================================================== --- firebird/branches/B2_1_Release/src/jrd/jrd.cpp 2010-11-08 08:48:50 UTC (rev 51860) +++ firebird/branches/B2_1_Release/src/jrd/jrd.cpp 2010-11-08 09:14:13 UTC (rev 51861) @@ -4685,6 +4685,24 @@ return true; } } + + // Check the thread state for already posted system errors. If any still persists, + // then someone tries to ignore our attempts to interrupt him. Let's insist. + + if (tdbb->tdbb_flags & TDBB_sys_error) + { + if (punt) { + CCH_unwind(tdbb, false); + ERR_post(isc_cancelled, isc_arg_end); + } + else { + ISC_STATUS* status = tdbb->tdbb_status_vector; + *status++ = isc_arg_gds; + *status++ = isc_cancelled; + *status++ = isc_arg_end; + return true; + } + } } // Enable signal handler for the monitoring stuff This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |