mirror of
https://github.com/opencv/opencv.git
synced 2026-01-18 17:21:42 +01:00
Merge pull request #28137 from Ghazi-raad:fix/null-pointer-gapi-state-28095-v2
Fix null pointer dereference in G-API stateful kernels
This commit is contained in:
@@ -443,7 +443,12 @@ struct OCVStCallHelper<Impl, std::tuple<Ins...>, std::tuple<Outs...>> :
|
||||
template<int... IIs, int... OIs>
|
||||
static void call_impl(GCPUContext &ctx, detail::Seq<IIs...>, detail::Seq<OIs...>)
|
||||
{
|
||||
auto& st = *ctx.state().get<std::shared_ptr<typename Impl::State>>();
|
||||
auto state_ptr = ctx.state().get<std::shared_ptr<typename Impl::State>>();
|
||||
if (state_ptr == nullptr) {
|
||||
CV_Error(cv::Error::StsNullPtr, "Stateful kernel's state is not initialized. "
|
||||
"Make sure the setup() function properly initializes the state.");
|
||||
}
|
||||
auto& st = *state_ptr;
|
||||
call_and_postprocess<decltype(get_in<Ins>::get(ctx, IIs))...>
|
||||
::call(st, get_in<Ins>::get(ctx, IIs)..., get_out<Outs>::get(ctx, OIs)...);
|
||||
}
|
||||
|
||||
@@ -103,8 +103,10 @@ namespace
|
||||
GAPI_OCV_KERNEL_ST(GOCVStInvalidResize, GStInvalidResize, int)
|
||||
{
|
||||
static void setup(const cv::GMatDesc, cv::Size, double, double, int,
|
||||
std::shared_ptr<int> &/* state */)
|
||||
{ }
|
||||
std::shared_ptr<int> &state)
|
||||
{
|
||||
state = std::make_shared<int>();
|
||||
}
|
||||
|
||||
static void run(const cv::Mat& in, cv::Size sz, double fx, double fy, int interp,
|
||||
cv::Mat &out, int& /* state */)
|
||||
@@ -150,9 +152,10 @@ namespace
|
||||
|
||||
GAPI_OCV_KERNEL_ST(GOCVCountStateSetups, GCountStateSetups, int)
|
||||
{
|
||||
static void setup(const cv::GMatDesc &, std::shared_ptr<int> &,
|
||||
static void setup(const cv::GMatDesc &, std::shared_ptr<int> &state,
|
||||
const cv::GCompileArgs &compileArgs)
|
||||
{
|
||||
state = std::make_shared<int>();
|
||||
auto params = cv::gapi::getCompileArg<CountStateSetupsParams>(compileArgs)
|
||||
.value_or(CountStateSetupsParams { });
|
||||
if (params.pSetupsCount != nullptr) {
|
||||
|
||||
Reference in New Issue
Block a user