--- mod_perl_wrap.cpp.old 2015-06-16 11:43:04.120000000 -0500 +++ mod_perl_wrap.cpp 2015-06-16 11:43:54.704000000 -0500 @@ -8710,13 +8711,18 @@ { int argvi = 0; PERL::Session *result = 0 ; + SV *foo; dXSARGS; if ((items < 0) || (items > 0)) { SWIG_croak("Usage: new_Session();"); } result = (PERL::Session *)new PERL::Session(); - ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_PERL__Session, SWIG_OWNER | SWIG_SHADOW); argvi++ ; + result->setPERL(my_perl); + foo = sv_newmortal(); + SWIG_MakePtr(foo, SWIG_as_voidptr(result), SWIGTYPE_p_PERL__Session, SWIG_OWNER | SWIG_SHADOW); + result->setME(foo); + ST(argvi) = foo; argvi++ ; XSRETURN(argvi); fail: SWIG_croak_null(); @@ -8735,6 +8741,7 @@ int res2 = 0 ; int argvi = 0; PERL::Session *result = 0 ; + SV *foo; dXSARGS; if ((items < 2) || (items > 2)) { @@ -8751,7 +8758,16 @@ } arg2 = reinterpret_cast< CoreSession * >(argp2); result = (PERL::Session *)new PERL::Session(arg1,arg2); - ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_PERL__Session, SWIG_OWNER | SWIG_SHADOW); argvi++ ; + if (result->allocated) { + result->setPERL(my_perl); + foo = get_sv(result->suuid, TRUE); + SWIG_MakePtr(foo, SWIG_as_voidptr(result), SWIGTYPE_p_PERL__Session, SWIG_OWNER | SWIG_SHADOW); + result->setME(foo); + } else { + foo = sv_newmortal(); + SWIG_MakePtr(foo, SWIG_as_voidptr(result), SWIGTYPE_p_PERL__Session, SWIG_OWNER | SWIG_SHADOW); + } + ST(argvi) = foo; argvi++ ; if (alloc1 == SWIG_NEWOBJ) delete[] buf1; XSRETURN(argvi); @@ -8771,6 +8787,7 @@ int alloc1 = 0 ; int argvi = 0; PERL::Session *result = 0 ; + SV *foo; dXSARGS; if ((items < 1) || (items > 1)) { @@ -8781,8 +8798,18 @@ SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "new_Session" "', argument " "1"" of type '" "char *""'"); } arg1 = reinterpret_cast< char * >(buf1); - result = (PERL::Session *)new PERL::Session(arg1); - ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_PERL__Session, SWIG_OWNER | SWIG_SHADOW); argvi++ ; + result = (PERL::Session *)new PERL::Session(arg1); + if (result->allocated) { + result->setPERL(my_perl); + foo = get_sv(result->suuid, TRUE); + SWIG_MakePtr(foo, SWIG_as_voidptr(result), SWIGTYPE_p_PERL__Session, SWIG_OWNER | SWIG_SHADOW); + result->setME(foo); + } else { + foo = sv_newmortal(); + SWIG_MakePtr(foo, SWIG_as_voidptr(result), SWIGTYPE_p_PERL__Session, SWIG_OWNER | SWIG_SHADOW); + } + ST(argvi) = foo; argvi++ ; + if (alloc1 == SWIG_NEWOBJ) delete[] buf1; XSRETURN(argvi); fail: @@ -8799,6 +8826,8 @@ int res1 = 0 ; int argvi = 0; PERL::Session *result = 0 ; + SV *foo; + dXSARGS; if ((items < 1) || (items > 1)) { @@ -8810,7 +8839,18 @@ } arg1 = reinterpret_cast< switch_core_session_t * >(argp1); result = (PERL::Session *)new PERL::Session(arg1); - ST(argvi) = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_PERL__Session, SWIG_OWNER | SWIG_SHADOW); argvi++ ; + if (result->allocated) { + result->setPERL(my_perl); + foo = get_sv(result->suuid, TRUE); + SWIG_MakePtr(foo, SWIG_as_voidptr(result), SWIGTYPE_p_PERL__Session, SWIG_OWNER | SWIG_SHADOW); + result->setME(foo); + } else { + foo = sv_newmortal(); + SWIG_MakePtr(foo, SWIG_as_voidptr(result), SWIGTYPE_p_PERL__Session, SWIG_OWNER | SWIG_SHADOW); + } + + ST(argvi) = foo; argvi++ ; + XSRETURN(argvi); fail: