mirror of
https://github.com/FirebirdSQL/firebird.git
synced 2025-02-02 10:00:38 +01:00
Fixed bug #8020 : AV when both function and dependent table are dropped in the same transaction
This commit is contained in:
parent
de4c4d075d
commit
83e3a06645
@ -12941,6 +12941,12 @@ DmlNode* UdfCallNode::parse(thread_db* tdbb, MemoryPool& pool, CompilerScratch*
|
||||
else if (!node->function)
|
||||
node->function = Function::lookup(tdbb, name, false);
|
||||
|
||||
if (!node->function)
|
||||
{
|
||||
blrReader.setPos(startPos);
|
||||
PAR_error(csb, Arg::Gds(isc_funnotdef) << name.toString());
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
@ -13001,6 +13007,12 @@ DmlNode* UdfCallNode::parse(thread_db* tdbb, MemoryPool& pool, CompilerScratch*
|
||||
else if (!node->function)
|
||||
node->function = Function::lookup(tdbb, name, false);
|
||||
|
||||
if (!node->function)
|
||||
{
|
||||
blrReader.setPos(startPos);
|
||||
PAR_error(csb, Arg::Gds(isc_funnotdef) << name.toString());
|
||||
}
|
||||
|
||||
argCount = blrReader.getByte();
|
||||
node->args = PAR_args(tdbb, csb, argCount, MAX(argCount, node->function->fun_inputs));
|
||||
}
|
||||
@ -13013,11 +13025,7 @@ DmlNode* UdfCallNode::parse(thread_db* tdbb, MemoryPool& pool, CompilerScratch*
|
||||
"blr_invoke_function_arg_names count cannot be greater than blr_invoke_function_args");
|
||||
}
|
||||
|
||||
if (!node->function)
|
||||
{
|
||||
blrReader.setPos(startPos);
|
||||
PAR_error(csb, Arg::Gds(isc_funnotdef) << name.toString());
|
||||
}
|
||||
fb_assert(node->function);
|
||||
|
||||
if (node->function->isImplemented() && !node->function->isDefined())
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user