diff --git a/plugins/psgi/psgi_loader.c b/plugins/psgi/psgi_loader.c index 82a42033..f759733b 100644 --- a/plugins/psgi/psgi_loader.c +++ b/plugins/psgi/psgi_loader.c @@ -30,6 +30,7 @@ XS(XS_error) { else { ST(0) = sv_bless(newRV_noinc(newSV(0)), ((HV **)wi->error)[0]); } + sv_2mortal(ST(0)); XSRETURN(1); } @@ -46,6 +47,7 @@ XS(XS_input) { else { ST(0) = sv_bless(newRV_noinc(newSV(0)), ((HV **)wi->input)[0]); } + sv_2mortal(ST(0)); XSRETURN(1); } @@ -85,6 +87,7 @@ XS(XS_stream) else { ST(0) = sv_bless(newRV_noinc(newSV(0)), ((HV **)wi->stream)[0]); } + sv_2mortal(ST(0)); XSRETURN(1); } else { diff --git a/plugins/psgi/psgi_plugin.c b/plugins/psgi/psgi_plugin.c index a764cb2c..7b39bf7c 100644 --- a/plugins/psgi/psgi_plugin.c +++ b/plugins/psgi/psgi_plugin.c @@ -114,7 +114,7 @@ SV *uwsgi_perl_obj_new(char *class, size_t class_len) { SPAGAIN; - newobj = POPs; + newobj = SvREFCNT_inc(POPs); PUTBACK; FREETMPS; LEAVE;