richter 02/01/25 07:51:31
Modified: . Tag: Embperl2c epinit.c
Log:
Revision Changes Path
No revision
No revision
1.1.2.18 +20 -6 embperl/Attic/epinit.c
Index: epinit.c
===================================================================
RCS file: /home/cvs/embperl/Attic/epinit.c,v
retrieving revision 1.1.2.17
retrieving revision 1.1.2.18
diff -u -r1.1.2.17 -r1.1.2.18
--- epinit.c 25 Jan 2002 07:04:31 -0000 1.1.2.17
+++ epinit.c 25 Jan 2002 15:51:31 -0000 1.1.2.18
@@ -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.17 2002/01/25 07:04:31 richter Exp $
+# $Id: epinit.c,v 1.1.2.18 2002/01/25 15:51:31 richter Exp $
#
###################################################################################*/
@@ -305,7 +305,7 @@
*/
if (pPerlParam && SvROK(pPerlParam))
- Embperl__App__Config_new_init(aTHX_ pApp, SvRV(pPerlParam), 0) ;
+ Embperl__App__Config_new_init(aTHX_ &pApp -> Config, SvRV(pPerlParam),
0) ;
}
*ppApp = pApp ;
@@ -1038,13 +1038,20 @@
{ /* we have a previous component, so let restore it */
tComponent * pPrev = c -> pPrev;
SV * pHV ;
+ MAGIC * mg;
memcpy (c, pPrev, sizeof (*c)) ;
/* adjust pointer in perl magic */
pHV = SvRV (c -> _perlsv) ;
- sv_unmagic (pHV, '~') ;
- sv_magic (pHV, NULL, '~', (char *)&pPrev, sizeof (pPrev)) ;
+ if (mg = mg_find (pHV, '~'))
+ *((tComponent **)(mg -> mg_ptr)) = c ;
+ pHV = SvRV (c -> Config._perlsv) ;
+ if (mg = mg_find (pHV, '~'))
+ *((tComponentConfig **)(mg -> mg_ptr)) = &c -> Config ;
+ pHV = SvRV (c -> Param._perlsv) ;
+ if (mg = mg_find (pHV, '~'))
+ *((tComponentParam **)(mg -> mg_ptr)) = &c -> Param ;
}
@@ -1261,6 +1268,7 @@
{ /* we have already a component, so let safe it first */
tComponent * pPrev ;
SV * pHV ;
+ MAGIC * mg ;
pPrev = ep_palloc(r->pPool,sizeof(*pPrev)) ;
@@ -1270,8 +1278,14 @@
/* adjust pointer in perl magic */
pHV = SvRV (pPrev -> _perlsv) ;
- sv_unmagic (pHV, '~') ;
- sv_magic (pHV, NULL, '~', (char *)&pPrev, sizeof (pPrev)) ;
+ if (mg = mg_find (pHV, '~'))
+ *((tComponent **)(mg -> mg_ptr)) = pPrev ;
+ pHV = SvRV (pPrev -> Config._perlsv) ;
+ if (mg = mg_find (pHV, '~'))
+ *((tComponentConfig **)(mg -> mg_ptr)) = &pPrev -> Config ;
+ pHV = SvRV (pPrev -> Param._perlsv) ;
+ if (mg = mg_find (pHV, '~'))
+ *((tComponentParam **)(mg -> mg_ptr)) = &pPrev -> Param ;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]