Fixes for perl 5.36 with multiplicity + memleak in $st->kv methods

I always keep messing up the aTHX_ and pTHX_ stuff because my system
perl isn't built with multiplicity, and I still haven't found a
satisfactory way of finding SV leaks. Valgrind can't track those :(
This commit is contained in:
Yorhel 2025-02-12 18:54:10 +01:00
parent 1f7e2de9a0
commit 867543267f
6 changed files with 40 additions and 32 deletions

View file

@ -265,7 +265,7 @@ RECVFN(array) {
return fupg_recv_array_elem(aTHX_ ctx->arrayelem, header, 0, ndim, &data, buf+len);
}
void fupg_send_array_elem(aTHX_ const fupg_tio *elem, const U32 *dims, U32 dim, U32 ndim, SV *v, fustr *out, int *hasnull) {
void fupg_send_array_elem(pTHX_ const fupg_tio *elem, const U32 *dims, U32 dim, U32 ndim, SV *v, fustr *out, int *hasnull) {
SvGETMAGIC(v);
if (dim == ndim) {
if (!SvOK(v)) {
@ -275,7 +275,7 @@ void fupg_send_array_elem(aTHX_ const fupg_tio *elem, const U32 *dims, U32 dim,
}
size_t lenoff = fustr_len(out);
fustr_write(out, "\0\0\0\0", 4);
elem->send(elem, v, out);
elem->send(aTHX_ elem, v, out);
fu_tobeU(32, fustr_start(out) + lenoff, fustr_len(out) - lenoff - 4);
return;
}
@ -395,7 +395,7 @@ SENDFN(record) {
}
size_t lenoff = fustr_len(out);
fustr_write(out, "\0\0\0\0", 4);
ctx->record.tio[i].send(ctx->record.tio+i, sv, out);
ctx->record.tio[i].send(aTHX_ ctx->record.tio+i, sv, out);
fu_tobeU(32, fustr_start(out) + lenoff, fustr_len(out) - lenoff - 4);
}
}