richter 02/03/19 23:49:36
Modified: . Tag: Embperl2c Changes.pod MANIFEST epinit.c
test.pl
Added: test/cmp Tag: Embperl2c keepreq.htm keepreq.htm.2
test/html Tag: Embperl2c keepreq.htm
Log:
fix cleanup of embperl objects
Revision Changes Path
No revision
No revision
1.129.4.56 +3 -0 embperl/Changes.pod
Index: Changes.pod
===================================================================
RCS file: /home/cvs/embperl/Changes.pod,v
retrieving revision 1.129.4.55
retrieving revision 1.129.4.56
diff -u -r1.129.4.55 -r1.129.4.56
--- Changes.pod 20 Mar 2002 06:28:22 -0000 1.129.4.55
+++ Changes.pod 20 Mar 2002 07:49:35 -0000 1.129.4.56
@@ -9,6 +9,9 @@
Embperl/Object.pm.
- Make symbolsnames unique so they don't clash with 1.3.4. Reported
by Kee Hinckley.
+ - Fixed a problem that ocurred when a reference to some of the Embperl
+ objects was kept after the end of it's lifetime, which caused a
+ segfault.
=head1 2.0b6 (BETA) 13. Mar. 2002
1.50.4.42 +3 -0 embperl/MANIFEST
Index: MANIFEST
===================================================================
RCS file: /home/cvs/embperl/MANIFEST,v
retrieving revision 1.50.4.41
retrieving revision 1.50.4.42
diff -u -r1.50.4.41 -r1.50.4.42
--- MANIFEST 18 Mar 2002 20:23:44 -0000 1.50.4.41
+++ MANIFEST 20 Mar 2002 07:49:35 -0000 1.50.4.42
@@ -250,6 +250,8 @@
test/cmp/inputjava.htm
test/cmp/inputjs2.htm
test/cmp/java.htm
+test/cmp/keepreq.htm
+test/cmp/keepreq.htm.2
test/cmp/lists.htm
test/cmp/loop.htm
test/cmp/loopperl.htm
@@ -438,6 +440,7 @@
test/html/inputjava.htm
test/html/inputjs2.htm
test/html/java.htm
+test/html/keepreq.htm
test/html/lists.htm
test/html/loop.htm
test/html/loopperl.htm
1.1.2.44 +16 -1 embperl/Attic/epinit.c
Index: epinit.c
===================================================================
RCS file: /home/cvs/embperl/Attic/epinit.c,v
retrieving revision 1.1.2.43
retrieving revision 1.1.2.44
diff -u -r1.1.2.43 -r1.1.2.44
--- epinit.c 12 Mar 2002 09:33:10 -0000 1.1.2.43
+++ epinit.c 20 Mar 2002 07:49:35 -0000 1.1.2.44
@@ -10,7 +10,7 @@
# IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
# WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
#
-# $Id: epinit.c,v 1.1.2.43 2002/03/12 09:33:10 richter Exp $
+# $Id: epinit.c,v 1.1.2.44 2002/03/20 07:49:35 richter Exp $
#
###################################################################################*/
@@ -1417,6 +1417,7 @@
sprintf (buf, "%d", SvREFCNT(SvRV(pOutput -> _perlsv)) - 1) ;
LogErrorParam (r -> pApp, rcRefcntNotOne, buf, "request.component.output") ;
}
+ sv_unmagic(SvRV(pOutput -> _perlsv), '~') ;
SvREFCNT_dec (pOutput -> _perlsv) ;
ep_destroy_pool (pOutput -> pPool) ;
@@ -1490,9 +1491,16 @@
sprintf (buf, "%d", SvREFCNT(SvRV(c -> _perlsv)) - 1) ;
LogErrorParam (r -> pApp, rcRefcntNotOne, buf, "request.component") ;
}
+ sv_unmagic(SvRV(c -> Config._perlsv), '~') ;
+ Embperl__Component__Config_destroy(aTHX_ &c -> Config) ;
SvREFCNT_dec (c -> Config._perlsv) ;
+ sv_unmagic(SvRV(c -> Param._perlsv), '~') ;
+ Embperl__Component__Param_destroy(aTHX_ &c -> Param) ;
SvREFCNT_dec (c -> Param._perlsv) ;
+ sv_unmagic(SvRV(c -> _perlsv), '~') ;
+ Embperl__Component_destroy(aTHX_ c) ;
SvREFCNT_dec (c -> _perlsv) ;
+ sv_setpv(ERRSV,"");
if (c == &r -> Component && c -> pPrev)
{ /* we have a previous component, so let restore it */
@@ -1610,13 +1618,20 @@
LogErrorParam (r -> pApp, rcRefcntNotOne, buf, "request") ;
}
*/
+ sv_unmagic(SvRV(r -> Config._perlsv), '~') ;
+ Embperl__Req__Config_destroy(aTHX_ &r -> Config) ;
SvREFCNT_dec (r -> Config._perlsv) ;
+ sv_unmagic(SvRV(r -> Param._perlsv), '~') ;
+ Embperl__Req__Param_destroy(aTHX_ &r -> Param) ;
SvREFCNT_dec (r -> Param._perlsv) ;
/* cleanup errarray manualy, to avoid segv incase error in destroy */
SvREFCNT_dec (r -> pErrArray) ;
r -> pErrArray = NULL ;
+
+ sv_unmagic(SvRV(r -> _perlsv), '~') ;
+ Embperl__Req_destroy(aTHX_ r) ;
SvREFCNT_dec (r -> _perlsv) ;
ep_destroy_pool (r -> pPool) ;
1.70.4.130 +10 -1 embperl/test.pl
Index: test.pl
===================================================================
RCS file: /home/cvs/embperl/test.pl,v
retrieving revision 1.70.4.129
retrieving revision 1.70.4.130
diff -u -r1.70.4.129 -r1.70.4.130
--- test.pl 12 Mar 2002 09:33:10 -0000 1.70.4.129
+++ test.pl 20 Mar 2002 07:49:35 -0000 1.70.4.130
@@ -11,7 +11,7 @@
# IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
# WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
#
-# $Id: test.pl,v 1.70.4.129 2002/03/12 09:33:10 richter Exp $
+# $Id: test.pl,v 1.70.4.130 2002/03/20 07:49:35 richter Exp $
#
###################################################################################
@@ -254,6 +254,15 @@
'offline' => 0,
'cgi' => 0,
'repeat' => 2,
+ },
+ 'keepreq.htm' => {
+ 'cgi' => 0,
+ 'errors' => 1,
+ },
+ 'keepreq.htm' => {
+ 'cgi' => 0,
+ 'errors' => 1,
+ 'cmpext' => '.2',
},
'include.htm' => {
'version' => 1,
No revision
No revision
1.1.2.1 +13 -0 embperl/test/cmp/Attic/keepreq.htm
1.1.2.1 +13 -0 embperl/test/cmp/Attic/keepreq.htm.2
No revision
No revision
1.1.2.1 +30 -0 embperl/test/html/Attic/keepreq.htm
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]