richter     01/05/16 07:05:01

  Modified:    .        Tag: Embperl2c Embperl.pm Embperl.xs ep.h epcomp.c
                        eputil.c test.pl
               Embperl/Syntax Tag: Embperl2c RTF.pm
               test/cmp Tag: Embperl2c rtfbasic.asc
               test/html/rtf Tag: Embperl2c rtfbasic.asc
  Log:
  catch errors in cleanup
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.118.4.40 +8 -3      embperl/Embperl.pm
  
  Index: Embperl.pm
  ===================================================================
  RCS file: /home/cvs/embperl/Embperl.pm,v
  retrieving revision 1.118.4.39
  retrieving revision 1.118.4.40
  diff -u -r1.118.4.39 -r1.118.4.40
  --- Embperl.pm        2001/05/16 06:45:19     1.118.4.39
  +++ Embperl.pm        2001/05/16 14:04:23     1.118.4.40
  @@ -10,7 +10,7 @@
   #   IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
   #   WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
   #
  -#   $Id: Embperl.pm,v 1.118.4.39 2001/05/16 06:45:19 richter Exp $
  +#   $Id: Embperl.pm,v 1.118.4.40 2001/05/16 14:04:23 richter Exp $
   #
   ###################################################################################
   
  @@ -1030,7 +1030,7 @@
                    $req_rec -> register_cleanup(\&HTML::Embperl::cleanup) if (defined 
($req_rec)) ;
                    }
                push @cleanups, $package ;
  -        
  +
                cleanup () if (!$r -> SubReq () && !$req_rec) ;
                }
            else
  @@ -1311,8 +1311,13 @@
               $Debugflags = dbgShowCleanup if ($package eq 'dbgShowCleanup') ;
               next if ($seen{$package}) ;
   
  +         if ($Debugflags & dbgShowCleanup)
  +             {
  +             print LOG "[$$]CUP:  ***** Cleanup package: $package *****\n" ;
  +                }
            $seen{$package} = 1 ;
  -            ClearSymtab ($package) ;
  +            eval { ClearSymtab ($package, $Debugflags) ; } ;
  +            print LOG "[$$]CUP:  Error: $@\n" if ($@) ;
               }
           }
       else
  
  
  
  1.29.4.17 +3 -2      embperl/Embperl.xs
  
  Index: Embperl.xs
  ===================================================================
  RCS file: /home/cvs/embperl/Embperl.xs,v
  retrieving revision 1.29.4.16
  retrieving revision 1.29.4.17
  diff -u -r1.29.4.16 -r1.29.4.17
  --- Embperl.xs        2001/05/15 14:19:23     1.29.4.16
  +++ Embperl.xs        2001/05/16 14:04:25     1.29.4.17
  @@ -342,10 +342,11 @@
   #ifdef EP2
   
   void 
  -embperl_ClearSymtab(sPackage)
  +embperl_ClearSymtab(sPackage,bDebug)
       char * sPackage
  +    int          bDebug
   CODE:
  -    ClearSymtab (pCurrReq, sPackage) ;
  +    ClearSymtab (pCurrReq, sPackage, bDebug) ;
   
   #endif
   
  
  
  
  1.27.4.15 +5 -1      embperl/ep.h
  
  Index: ep.h
  ===================================================================
  RCS file: /home/cvs/embperl/ep.h,v
  retrieving revision 1.27.4.14
  retrieving revision 1.27.4.15
  diff -u -r1.27.4.14 -r1.27.4.15
  --- ep.h      2001/05/11 07:13:47     1.27.4.14
  +++ ep.h      2001/05/16 14:04:26     1.27.4.15
  @@ -454,6 +454,9 @@
   #ifndef WIN32
   #define strnicmp strncasecmp
   #define stricmp strcasecmp
  +#else
  +#define strnicmp _strnicmp
  +#define stricmp _stricmp
   #endif
   
   void Dirname (/*in*/ const char * filename,
  @@ -472,7 +475,8 @@
   
   
   void ClearSymtab (/*i/o*/ register req * r,
  -               /*in*/  const char *    sPackage) ;
  +               /*in*/  const char *    sPackage,
  +                  /*in*/  int                 bDebug) ;
   
   void UndefSub    (/*i/o*/ register req * r,
                  /*in*/  const char *    sName, 
  
  
  
  1.4.2.53  +2 -2      embperl/Attic/epcomp.c
  
  Index: epcomp.c
  ===================================================================
  RCS file: /home/cvs/embperl/Attic/epcomp.c,v
  retrieving revision 1.4.2.52
  retrieving revision 1.4.2.53
  diff -u -r1.4.2.52 -r1.4.2.53
  --- epcomp.c  2001/05/15 14:19:43     1.4.2.52
  +++ epcomp.c  2001/05/16 14:04:28     1.4.2.53
  @@ -9,7 +9,7 @@
   #   IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
   #   WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
   #
  -#   $Id: epcomp.c,v 1.4.2.52 2001/05/15 14:19:43 richter Exp $
  +#   $Id: epcomp.c,v 1.4.2.53 2001/05/16 14:04:28 richter Exp $
   #
   
###################################################################################*/
   
  @@ -305,7 +305,7 @@
                {
                or = strchr (eq + 1, '|') ;
                e = or?or:q ;
  -             if (strncasecmp (sText, eq, e - eq) == 0)
  +             if (strnicmp (sText, eq, e - eq) == 0)
                    break ;
                if (or == NULL)
                    return 0 ;
  
  
  
  1.15.4.11 +57 -8     embperl/eputil.c
  
  Index: eputil.c
  ===================================================================
  RCS file: /home/cvs/embperl/eputil.c,v
  retrieving revision 1.15.4.10
  retrieving revision 1.15.4.11
  diff -u -r1.15.4.10 -r1.15.4.11
  --- eputil.c  2001/05/15 14:20:09     1.15.4.10
  +++ eputil.c  2001/05/16 14:04:30     1.15.4.11
  @@ -10,7 +10,7 @@
   #   IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
   #   WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
   #
  -#   $Id: eputil.c,v 1.15.4.10 2001/05/15 14:20:09 richter Exp $
  +#   $Id: eputil.c,v 1.15.4.11 2001/05/16 14:04:30 richter Exp $
   #
   
###################################################################################*/
   
  @@ -880,14 +880,15 @@
   
   
   void ClearSymtab (/*i/o*/ register req * r,
  -               /*in*/  const char *    sPackage) 
  +               /*in*/  const char *   sPackage,
  +                  /*in*/  int                 bDebug) 
   
       {
       dTHXsem 
       SV *     val;
       char *   key;
       I32              klen;
  -    int              bDebug = 0 ;
  +    
       SV *     sv;
       HV *     hv;
       AV *     av;
  @@ -901,6 +902,7 @@
       HV *     pCleanupHV ;
       char *      s ;
       GV *     pFileGV ;
  +    char *      sObjName ;
       /*
       GV *     symtabgv ;
       GV *     symtabfilegv ;
  @@ -1006,20 +1008,67 @@
            */
            }
        
  +     sObjName = NULL ;
        
  -     if((sv = GvSV((GV*)val)) && SvOK (sv))
  +        lprintf (r, "[%d]CUP: type = %d flags=%x\n", r -> nPid, SvTYPE 
(GvSV((GV*)val)), SvFLAGS (GvSV((GV*)val))) ;
  +        if((sv = GvSV((GV*)val)) && SvTYPE (sv) == SVt_PVMG)
  +         {
  +            HV * pStash = SvSTASH (sv) ;
  +
  +            if (pStash)
  +                {
  +                sObjName = HvNAME(pStash) ;
  +                if (sObjName && strcmp (sObjName, "DBIx::Recordset") == 0)
  +                    {
  +                    SV * pSV = newSVpvf ("DBIx::Recordset::Undef ('%s')", s) ;
  +
  +                 if (bDebug)
  +                     lprintf (r, "[%d]CUP: Recordset *%s\n", r -> nPid, s) ;
  +                    EvalDirect (r, pSV, 0, NULL) ;
  +                    SvREFCNT_dec (pSV) ;
  +                    }
  +                }
  +            }
  +
  +        if((sv = GvSV((GV*)val)) && SvROK (sv) && SvOBJECT (SvRV(sv)))
            {
  +            HV * pStash = SvSTASH (SvRV(sv)) ;
  +        lprintf (r, "[%d]CUP: rv type = %d\n", r -> nPid, SvTYPE 
(SvRV(GvSV((GV*)val)))) ;
  +            if (pStash)
  +                {
  +                sObjName = HvNAME(pStash) ;
  +                if (sObjName && strcmp (sObjName, "DBIx::Recordset") == 0)
  +                    {
  +                    SV * pSV = newSVpvf ("DBIx::Recordset::Undef ('%s')", s) ;
  +
  +                 if (bDebug)
  +                     lprintf (r, "[%d]CUP: Recordset *%s\n", r -> nPid, s) ;
  +                    EvalDirect (r, pSV, 0, NULL) ;
  +                    SvREFCNT_dec (pSV) ;
  +                    }
  +                }
  +            }
  +     if((sv = GvSV((GV*)val)) && (SvOK (sv) || SvROK (sv)))
  +         {
            if (bDebug)
  -             lprintf (r, "[%d]CUP: $%s = %s\n", r -> nPid, s, SvPV (sv, l)) ;
  +                lprintf (r, "[%d]CUP: $%s = %s %s%s\n", r -> nPid, s, SvPV (sv, l), 
sObjName?" Object of ":"", sObjName?sObjName:"") ;
        
  -         sv_unmagic (sv, 'q') ; /* untie */
  -         sv_setsv(sv, &sv_undef);
  +         if ((sv = GvSV((GV*)val)) && SvREADONLY (sv))
  +             {
  +             if (bDebug)
  +                 lprintf (r, "[%d]CUP: Ignore %s because it's readonly\n", r -> 
nPid, s) ;
  +             }
  +            else
  +                {
  +             sv_unmagic (sv, 'q') ; /* untie */
  +             sv_setsv(sv, &sv_undef);
  +                }
            }
        if((hv = GvHV((GV*)val)))
            {
            if (bDebug)
                lprintf (r, "[%d]CUP: %%%s = ...\n", r -> nPid, s) ;
  -         sv_unmagic ((SV *)hv, 'P') ; /* untie */
  +            sv_unmagic ((SV *)hv, 'P') ; /* untie */
            hv_clear(hv);
            }
        if((av = GvAV((GV*)val)))
  
  
  
  1.70.4.59 +2 -2      embperl/test.pl
  
  Index: test.pl
  ===================================================================
  RCS file: /home/cvs/embperl/test.pl,v
  retrieving revision 1.70.4.58
  retrieving revision 1.70.4.59
  diff -u -r1.70.4.58 -r1.70.4.59
  --- test.pl   2001/05/15 14:20:12     1.70.4.58
  +++ test.pl   2001/05/16 14:04:32     1.70.4.59
  @@ -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.58 2001/05/15 14:20:12 richter Exp $
  +#   $Id: test.pl,v 1.70.4.59 2001/05/16 14:04:32 richter Exp $
   #
   ###################################################################################
   
  @@ -590,7 +590,7 @@
           'version'    => 2,
           'syntax'     => 'RTF',
           'offline'    => 1,
  -        'param'      => { one => 1, hash => { a => 111, b => 222, c => 
[1111,2222,3333,4444]}, array => [11,22,33] },
  +        'param'      => { one => 1, hash => { a => 111, b => 222, c => 
[1111,2222,3333,4444]}, array => [11,22,33], uml => '���', brace => 'open { close } 
end' },
           },
       'rtf/rtffull.asc' => { 
           'version'    => 2,
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.10  +6 -6      embperl/Embperl/Syntax/Attic/RTF.pm
  
  Index: RTF.pm
  ===================================================================
  RCS file: /home/cvs/embperl/Embperl/Syntax/Attic/RTF.pm,v
  retrieving revision 1.1.2.9
  retrieving revision 1.1.2.10
  diff -u -r1.1.2.9 -r1.1.2.10
  --- RTF.pm    2001/05/09 11:11:41     1.1.2.9
  +++ RTF.pm    2001/05/16 14:04:44     1.1.2.10
  @@ -10,7 +10,7 @@
   #   IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
   #   WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
   #
  -#   $Id: RTF.pm,v 1.1.2.9 2001/05/09 11:11:41 richter Exp $
  +#   $Id: RTF.pm,v 1.1.2.10 2001/05/16 14:04:44 richter Exp $
   #
   ###################################################################################
    
  @@ -154,12 +154,12 @@
       {
       my ($self) = @_ ;
   
  -    $self -> AddInitCode (undef, '$_ep_rtf_ndx=0;', undef) ;
  +    $self -> AddInitCode (undef, '$_ep_rtf_ndx=0;$escmode=0;sub esc { my $x = shift 
; $x =~ s/([{}])/\\\\$1/g ; $x} ; ', undef) ;
   
       $self -> AddRTFCmd ('DOCVARIABLE',
                               { 
  -                            perlcode => '_ep_rp(%$x%,scalar(join(\'\',', 
  -                            perlcodeend => ')));', 
  +                            perlcode => '_ep_rp(%$x%,scalar(esc(join(\'\',', 
  +                            perlcodeend => '))));', 
                            },
                               { 
                               #'removenode'  => 4,
  @@ -169,8 +169,8 @@
                               ) ;
       $self -> AddRTFCmd ('MERGEFIELD',
                               { 
  -                            perlcode => '_ep_rp(%$x%,scalar(join(\'\',', 
  -                            perlcodeend => ')));', 
  +                            perlcode => '_ep_rp(%$x%,scalar(esc(join(\'\',', 
  +                            perlcodeend => '))));', 
                            },
                               { 
                               #'removenode'  => 4,
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.2   +3 -0      embperl/test/cmp/Attic/rtfbasic.asc
  
  Index: rtfbasic.asc
  ===================================================================
  RCS file: /home/cvs/embperl/test/cmp/Attic/rtfbasic.asc,v
  retrieving revision 1.1.2.1
  retrieving revision 1.1.2.2
  diff -u -r1.1.2.1 -r1.1.2.2
  --- rtfbasic.asc      2001/05/07 11:48:54     1.1.2.1
  +++ rtfbasic.asc      2001/05/16 14:04:49     1.1.2.2
  @@ -10,3 +10,6 @@
   
   {\b\f1\fs80\lang1024 1}
   
  +{���}
  +{open \{ close \} end}
  +
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.6   +3 -0      embperl/test/html/rtf/Attic/rtfbasic.asc
  
  Index: rtfbasic.asc
  ===================================================================
  RCS file: /home/cvs/embperl/test/html/rtf/Attic/rtfbasic.asc,v
  retrieving revision 1.1.2.5
  retrieving revision 1.1.2.6
  diff -u -r1.1.2.5 -r1.1.2.6
  --- rtfbasic.asc      2001/05/07 11:49:01     1.1.2.5
  +++ rtfbasic.asc      2001/05/16 14:04:57     1.1.2.6
  @@ -9,3 +9,6 @@
   {hash.c.3: }{\field{\*\fldinst { MERGEFIELD hash.c.1 }}{\fldrslt }}
   
   {\field{\*\fldinst {\b\f1\fs80\lang1024   MERGEFIELD one }}{\fldrslt 
{\b\f1\fs80\lang1024 ----}}}
  +
  +{\field{\*\fldinst {MERGEFIELD uml }}{\fldrslt {\b\f1\fs80\lang1024 ----}}}
  +{\field{\*\fldinst {MERGEFIELD brace }}{\fldrslt {\b\f1\fs80\lang1024 ----}}}
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to