You are viewing a plain text version of this content. The canonical link for it is here.
Posted to embperl-cvs@perl.apache.org by ri...@apache.org on 2001/02/09 10:46:32 UTC

cvs commit: embperl Changes.pod Makefile.PL epmain.c test.pl

richter     01/02/09 01:46:31

  Modified:    .        Changes.pod Makefile.PL epmain.c test.pl
  Log:
     - Fixed a SIGSEGV that occurs when an reference to undef is returned
       from a [+ +] inside a URL.
  
  Revision  Changes    Path
  1.153     +2 -0      embperl/Changes.pod
  
  Index: Changes.pod
  ===================================================================
  RCS file: /home/cvs/embperl/Changes.pod,v
  retrieving revision 1.152
  retrieving revision 1.153
  diff -u -r1.152 -r1.153
  --- Changes.pod	2001/02/07 08:20:38	1.152
  +++ Changes.pod	2001/02/09 09:46:31	1.153
  @@ -31,6 +31,8 @@
      - Fixed problem with including ../foo.html in EmbperlObject. Spotted
        by Neil Gunton.
      - Added warning if @ISA is not correctly setup/corrupted.
  +   - Fixed a SIGSEGV that occurs when an reference to undef is returned
  +     from a [+ +] inside a URL.
       
   
   =head1 1.3.0 (RELEASE)   4 Dec. 2000
  
  
  
  1.39      +1 -1      embperl/Makefile.PL
  
  Index: Makefile.PL
  ===================================================================
  RCS file: /home/cvs/embperl/Makefile.PL,v
  retrieving revision 1.38
  retrieving revision 1.39
  diff -u -r1.38 -r1.39
  --- Makefile.PL	2000/11/13 08:58:29	1.38
  +++ Makefile.PL	2001/02/09 09:46:31	1.39
  @@ -352,7 +352,7 @@
           }
       else
           {
  -        $ccdebug = '-g' ;
  +        $ccdebug = '-ggdb' ;
           $lddebug = '-g' ;
           }
       }
  
  
  
  1.92      +38 -34    embperl/epmain.c
  
  Index: epmain.c
  ===================================================================
  RCS file: /home/cvs/embperl/epmain.c,v
  retrieving revision 1.91
  retrieving revision 1.92
  diff -u -r1.91 -r1.92
  --- epmain.c	2001/01/29 10:43:56	1.91
  +++ epmain.c	2001/02/09 09:46:31	1.92
  @@ -822,46 +822,50 @@
   
                   if (pRet)
                       {
  -                    if (r -> bEscInUrl && SvTYPE(pRet) == SVt_RV && SvTYPE((pAV = (AV *)SvRV(pRet))) == SVt_PVAV)
  -			{ /* Array reference inside URL */
  -			SV ** ppSV ;
  -			int i ;
  -			int f = AvFILL(pAV)  ;
  -			for (i = 0; i <= f; i++)
  -			    {
  -			    ppSV = av_fetch (pAV, i, 0) ;
  -			    if (ppSV && *ppSV)
  +		    if (r -> bEscInUrl && SvTYPE(pRet) == SVt_RV && (pAV = (AV *)SvRV(pRet)))
  +			{			    
  +			if (SvTYPE(pAV) == SVt_PVAV)
  +			    { /* Array reference inside URL */
  +			    SV ** ppSV ;
  +			    int i ;
  +			    int f = AvFILL(pAV)  ;
  +			    for (i = 0; i <= f; i++)
   				{
  -				OutputToHtml (r, SvPV (*ppSV, l)) ;
  +				ppSV = av_fetch (pAV, i, 0) ;
  +				if (ppSV && *ppSV)
  +				    {
  +				    OutputToHtml (r, SvPV (*ppSV, l)) ;
  +				    }
  +				if ((i & 1) == 0)
  +				    oputc (r, '=' ) ;
  +				else if (i < f)
  +				    oputs (r, "&amp;") ;
   				}
  -			    if ((i & 1) == 0)
  -				oputc (r, '=' ) ;
  -			    else if (i < f)
  -				oputs (r, "&amp;") ;
  +			
   			    }
  -		    
  -			}
  -		    else if (r -> bEscInUrl && SvTYPE(pRet) == SVt_RV && SvTYPE((pHV = (HV *)SvRV(pRet))) == SVt_PVHV)
  -			{ /* Hash reference inside URL */
  -		        int         i = 0 ;
  -			HE *	    pEntry ;
  -			char *	    pKey ;
  -			SV * 	    pSVValue ;
  +			else if (SvTYPE(pAV) == SVt_PVHV)
  +			    { /* Hash reference inside URL */
  +			    int         i = 0 ;
  +			    HE *	    pEntry ;
  +			    char *	    pKey ;
  +			    SV * 	    pSVValue ;
  +			    pHV = (HV *)pAV ;
   
  -			hv_iterinit (pHV) ;
  -			while (pEntry = hv_iternext (pHV))
  -			    {
  -			    if (i++ > 0)
  -				oputs (r, "&amp;") ;
  -			    pKey     = hv_iterkey (pEntry, &li) ;
  -			    OutputToHtml (r, pKey) ;
  -			    oputc (r, '=' ) ;
  +			    hv_iterinit (pHV) ;
  +			    while (pEntry = hv_iternext (pHV))
  +				{
  +				if (i++ > 0)
  +				    oputs (r, "&amp;") ;
  +				pKey     = hv_iterkey (pEntry, &li) ;
  +				OutputToHtml (r, pKey) ;
  +				oputc (r, '=' ) ;
   
  -			    pSVValue = hv_iterval (pHV , pEntry) ;
  -			    if (pSVValue)
  -				OutputToHtml (r, SvPV (pSVValue, l)) ;
  +				pSVValue = hv_iterval (pHV , pEntry) ;
  +				if (pSVValue)
  +				    OutputToHtml (r, SvPV (pSVValue, l)) ;
  +				}
   			    }
  -			}	
  +			}
   		    else
   			{
   			if (r -> pCurrEscape == NULL)
  
  
  
  1.93      +5 -3      embperl/test.pl
  
  Index: test.pl
  ===================================================================
  RCS file: /home/cvs/embperl/test.pl,v
  retrieving revision 1.92
  retrieving revision 1.93
  diff -u -r1.92 -r1.93
  --- test.pl	2001/02/07 08:20:51	1.92
  +++ test.pl	2001/02/09 09:46:31	1.93
  @@ -491,7 +491,7 @@
               $testshare
               $opt_offline $opt_ep1 $opt_cgi $opt_modperl $opt_execute $opt_nokill $opt_loop
               $opt_multchild $opt_memcheck $opt_exitonmem $opt_exitonsv $opt_config $opt_nostart $opt_uniquefn
  -            $opt_quite $opt_ignoreerror $opt_tests $opt_blib $opt_help $opt_dbgbreak $opt_finderr
  +            $opt_quite $opt_qq $opt_ignoreerror $opt_tests $opt_blib $opt_help $opt_dbgbreak $opt_finderr
               $opt_ddd $opt_gdb $opt_ab $opt_abpre $opt_abverbose $opt_start $opt_kill $opt_showcookie $opt_cache) ;
   
       {
  @@ -566,7 +566,7 @@
   $@ = "" ;
   $ret = GetOptions ("offline|o", "ep1|1", "cgi|c", "cache|a", "modperl|httpd|h", "execute|e", "nokill|r", "loop|l:i",
               "multchild|m", "memcheck|v", "exitonmem|g", "exitonsv", "config|f=s", "nostart|x", "uniquefn|u",
  -            "quite|q", "ignoreerror|i", "tests|t", "blib|b", "help", "dbgbreak", "finderr",
  +            "quite|q", "qq", "ignoreerror|i", "tests|t", "blib|b", "help", "dbgbreak", "finderr",
   	    "ddd", "gdb", "ab:s", "abverbose", "abpre", "start", "kill", "showcookie") ;
   
   $opt_help = 1 if ($ret == 0) ;
  @@ -1059,6 +1059,7 @@
   
   $outfile .= ".$$" if ($opt_uniquefn) ;
   $defaultdebug = 1 if ($opt_quite) ;
  +$defaultdebug = 0 if ($opt_qq) ;
   $opt_ep1 = 0 if (!$EP2) ;
   $EP1COMPAT = 1 if ($opt_ep1) ;
   
  @@ -1188,7 +1189,8 @@
                   $errcnt = 7 if ($file eq 'varerr.htm' && $^V && $^V ge v5.6.0) ;
   
                   $debug = $test -> {debug} || $defaultdebug ;  
  -	        $page = "$inpath/$file" ;
  +	        $debug = 0 if ($opt_qq) ;
  +		$page = "$inpath/$file" ;
   	        $page = "$inpath$testversion/$file" if (-e "$inpath$testversion/$file") ;
                   #$page .= '-1' if ($ep1compat && -e "$page-1") ;