--- mod_perl_wrap.cpp 2008-07-16 13:38:11.000000000 -0500 +++ old.cpp 2008-07-16 13:37:44.000000000 -0500 @@ -8852,13 +8852,18 @@ { PERL::Session *result = 0 ; int argvi = 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 = (PERL::Session *)new PERL::Session(); + 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(); @@ -8874,6 +8879,7 @@ char *buf1 = 0 ; int alloc1 = 0 ; int argvi = 0; + SV *foo; dXSARGS; if ((items < 1) || (items > 1)) { @@ -8884,9 +8890,19 @@ 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: if (alloc1 == SWIG_NEWOBJ) delete[] buf1; @@ -8902,6 +8918,7 @@ void *argp1 = 0 ; int res1 = 0 ; int argvi = 0; + SV *foo; dXSARGS; if ((items < 1) || (items > 1)) { @@ -8913,8 +8930,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: