Skip to content

Commit

Permalink
create scratch SV early, destroy wrap after push SV
Browse files Browse the repository at this point in the history
  • Loading branch information
mohawk2 committed Feb 20, 2023
1 parent f32d38c commit d412b5d
Showing 1 changed file with 3 additions and 3 deletions.
6 changes: 3 additions & 3 deletions typemap
Original file line number Diff line number Diff line change
Expand Up @@ -89,21 +89,21 @@ T_OPENCV_VECTOR
PDL_CORE_(barf_if_error)(*(pdl_error *)&CW_err);
AV *av = newAV(); av_extend(av, sz);
for (i = 0; i < sz; i++) {
SV* pxsv = newSV(0);
if (!pxsv) PDL_CORE_(pdl_barf)(\"Failed to create SV\");
PDL_Indx d1, d2, d3; pdl_datatypes dt;
cw_Mat_pdlDims(wrap2[i], &dt, &d1, &d2, &d3);
pdl* px = PDL_CORE_(pdlnew)();
if (!px) PDL_CORE_(pdl_barf)(\"Failed to create pdl\");
SV* pxsv = newSV(0);
if (!pxsv) PDL_CORE_(pdl_barf)(\"Failed to create SV\");
PDL_CORE_(SetSV_PDL)(pxsv, px);
PDL_Indx pdims[] = { d1, d2, d3 };
PDL_CORE_(barf_if_error)(PDL->setdims(px,pdims,3));
px->datatype = dt;
PDL_CORE_(barf_if_error)(PDL_CORE_(make_physical)(px));
CW_err = cw_${(my $novecstar=$type)=~s/^vector_(.*)Wrapper\s*\**$/$1/; \$novecstar}_copyDataTo(wrap2[i], px->data, px->nbytes);
cw_${(my $novecstar=$type)=~s/^vector_(.*)Wrapper\s*\**$/$1/; \$novecstar}_DESTROY(wrap2[i]);
PDL_CORE_(barf_if_error)(*(pdl_error *)&CW_err);
if (!av_store(av, i, pxsv)) PDL_CORE_(pdl_barf)(\"Failed to push SV\");
cw_${(my $novecstar=$type)=~s/^vector_(.*)Wrapper\s*\**$/$1/; \$novecstar}_DESTROY(wrap2[i]);
}
cw_${(my $nostar=$type)=~s/Wrapper\s*\**$//; \$nostar}_DESTROY($var);
sv_setsv($arg, newRV_noinc((SV*)av));
Expand Down

0 comments on commit d412b5d

Please sign in to comment.