home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / perl501m.zip / patches / patch.1l < prev    next >
Text File  |  1995-06-06  |  21KB  |  819 lines

  1. # This is my patch  patch.1l for perl5.001.  See description below.
  2. #    Andy Dougherty        doughera@lafcol.lafayette.edu
  3. #
  4.  
  5. # Please execute the following commands before applying this patch.
  6. # (You can feed this patch to 'sh' to do so.)
  7.  
  8. # This hint file works for NeXT 3.2 or 3.3.
  9. mv hints/next_3_2.sh hints/next_3.sh
  10. exit
  11.  
  12. This is my patch  patch.1l  for perl5.001.
  13.  
  14. To apply, change to your perl directory, run the command above, then
  15. apply with
  16.     patch -p1 -N  < thispatch.
  17.  
  18. This patch fixes all the Configure & build problems for which I have a
  19. solution.
  20.  
  21. After you apply this patch, I would recommend:
  22.     make distclean  # or at the very least   rm config.sh
  23.     sh Configure [whatever options you use]
  24.     make depend
  25.     make 
  26.     make test
  27.  
  28. Patch and enjoy,
  29.  
  30.     Andy Dougherty        doughera@lafcol.lafayette.edu
  31.     Dept. of Physics
  32.     Lafayette College, Easton PA 18042
  33.  
  34. Here are the file-by-file contents:
  35.  
  36. Changes.Conf
  37.     Updated a bit.
  38.  
  39. Configure
  40.     Now honors hints on <pwd.h>-related things (for CX/UX, in particular).
  41.  
  42.     Now honors previous values of d_stdio_ptr_lval and d_stdio_cnt_lval.
  43.  
  44.     DB test programs now conditionally include 'const'.
  45.  
  46. MANIFEST
  47.     Updated.
  48.  
  49. config_H
  50.     Updated.
  51.  
  52. config_h.SH
  53.     Include trailing /**/ on STDIO_..._LVALUE defines.
  54.  
  55. hints/cxux.sh
  56.     Simplified.  
  57.     Include info about failing test.
  58.  
  59. hints/epix.sh
  60.     A guess at a dynamic loading fix.
  61.  
  62. hints/next_3.sh
  63.     Add a few comments.
  64.  
  65. lib/Benchmark.pm
  66.     Ensure numeric context on number of loop iterations.
  67.  
  68. op.c
  69.     Spider's padlex and goto &$nonesuch patches.
  70.  
  71. perl.c
  72.     fputs("\tUnofficial patchlevel 1l.\n",stdout);
  73.  
  74. pp_ctl.c
  75. pp_hot.c
  76. scope.c
  77.     Spider's padlex and goto &$nonesuch patches.
  78.  
  79.  
  80. Index: Changes.Conf
  81. *** perl5.001k/Changes.Conf    Thu May 25 15:34:26 1995
  82. --- perl5.001l/Changes.Conf    Tue Jun  6 13:23:58 1995
  83. ***************
  84. *** 22,27 ****
  85. --- 22,43 ----
  86.      
  87.       Many hint file updates.
  88.   
  89. + Upgrade Traps and Pitfalls:
  90. + Since a lot has changed in the build process, you are probably best off
  91. + starting with a fresh copy of the perl5.002 sources.  In particular,
  92. + your 5.000 or 5.001 config.sh will contain several variables that are no
  93. + longer needed.  Further, improvements in the Configure tests may mean
  94. + that some of the answers will be different than they were in previous
  95. + versions, and which answer to keep can be difficult to sort out. 
  96. + Therefore, you are probably better off ignoring your old config.sh, as
  97. + in the following:
  98. +     make distclean # (if you've built perl before)
  99. +     sh Configure [whatever options you like]
  100. +     make depend
  101. +     make
  102. +     make test
  103.   
  104.   -------------
  105.   Version 5.001
  106. ***************
  107. *** 120,131 ****
  108.       make test
  109.       <mv old architecture-dependent library to new location, if needed>
  110.       make install
  111.   
  112. --- 136,139 ----
  113. Index: Configure
  114. Prereq:  3.0.1.7 
  115. *** perl5.001k/Configure    Mon Jun  5 12:23:03 1995
  116. --- perl5.001l/Configure    Tue Jun  6 12:29:51 1995
  117. ***************
  118. *** 20,26 ****
  119.   
  120.   # $Id: Head.U,v 3.0.1.7 1995/03/21 08:46:15 ram Exp $
  121.   #
  122. ! # Generated on Mon Jun  5 12:18:53 EDT 1995 [metaconfig 3.0 PL55]
  123.   
  124.   cat >/tmp/c1$$ <<EOF
  125.   ARGGGHHHH!!!!!
  126. --- 20,26 ----
  127.   
  128.   # $Id: Head.U,v 3.0.1.7 1995/03/21 08:46:15 ram Exp $
  129.   #
  130. ! # Generated on Tue Jun  6 12:25:20 EDT 1995 [metaconfig 3.0 PL55]
  131.   
  132.   cat >/tmp/c1$$ <<EOF
  133.   ARGGGHHHH!!!!!
  134. ***************
  135. *** 5180,5233 ****
  136.   set pipe d_pipe
  137.   eval $inlibc
  138.   
  139. ! : see if this is a pwd system
  140. ! echo " "
  141. ! xxx=`./findhdr pwd.h`
  142. ! if $test "$xxx"; then
  143. !     i_pwd="$define"
  144. !     echo "<pwd.h> found." >&4
  145.       $cppstdin $cppflags $cppminus < $xxx >$$.h
  146.       if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
  147. !         d_pwquota="$define"
  148.       else
  149. !         d_pwquota="$undef"
  150.       fi
  151.       if $contains 'pw_age' $$.h >/dev/null 2>&1; then
  152. !         d_pwage="$define"
  153.       else
  154. !         d_pwage="$undef"
  155.       fi
  156.       if $contains 'pw_change' $$.h >/dev/null 2>&1; then
  157. !         d_pwchange="$define"
  158.       else
  159. !         d_pwchange="$undef"
  160.       fi
  161.       if $contains 'pw_class' $$.h >/dev/null 2>&1; then
  162. !         d_pwclass="$define"
  163.       else
  164. !         d_pwclass="$undef"
  165.       fi
  166.       if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
  167. !         d_pwexpire="$define"
  168.       else
  169. !         d_pwexpire="$undef"
  170.       fi
  171.       if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
  172. !         d_pwcomment="$define"
  173.       else
  174. !         d_pwcomment="$undef"
  175.       fi
  176.       $rm -f $$.h
  177. ! else
  178. !     i_pwd="$undef"
  179. !     d_pwquota="$undef"
  180. !     d_pwage="$undef"
  181. !     d_pwchange="$undef"
  182. !     d_pwclass="$undef"
  183. !     d_pwexpire="$undef"
  184. !     d_pwcomment="$undef"
  185. !     echo "<pwd.h> NOT found." >&4
  186. ! fi
  187.   
  188.   : see if readdir and friends exist
  189.   set readdir d_readdir
  190. --- 5180,5254 ----
  191.   set pipe d_pipe
  192.   eval $inlibc
  193.   
  194. ! : see if this is a pwd.h system
  195. ! set pwd.h i_pwd
  196. ! eval $inhdr
  197. ! case "$i_pwd" in
  198. ! $define)
  199. !     xxx=`./findhdr pwd.h`
  200.       $cppstdin $cppflags $cppminus < $xxx >$$.h
  201.       if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
  202. !         val="$define"
  203.       else
  204. !         val="$undef"
  205.       fi
  206. +     set d_pwquota
  207. +     eval $setvar
  208.       if $contains 'pw_age' $$.h >/dev/null 2>&1; then
  209. !         val="$define"
  210.       else
  211. !         val="$undef"
  212.       fi
  213. +     set d_pwage
  214. +     eval $setvar
  215.       if $contains 'pw_change' $$.h >/dev/null 2>&1; then
  216. !         val="$define"
  217.       else
  218. !         val="$undef"
  219.       fi
  220. +     set d_pwchange
  221. +     eval $setvar
  222.       if $contains 'pw_class' $$.h >/dev/null 2>&1; then
  223. !         val="$define"
  224.       else
  225. !         val="$undef"
  226.       fi
  227. +     set d_pwclass
  228. +     eval $setvar
  229.       if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
  230. !         val="$define"
  231.       else
  232. !         val="$undef"
  233.       fi
  234. +     set d_pwexpire
  235. +     eval $setvar
  236.       if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
  237. !         val="$define"
  238.       else
  239. !         val="$undef"
  240.       fi
  241. +     set d_pwcomment
  242. +     eval $setvar
  243.       $rm -f $$.h
  244. !     ;;
  245. ! *)
  246. !     val="$undef"; 
  247. !     set d_pwquota; eval $setvar
  248. !     set d_pwage; eval $setvar
  249. !     set d_pwchange; eval $setvar
  250. !     set d_pwclass; eval $setvar
  251. !     set d_pwexpire; eval $setvar
  252. !     set d_pwcomment; eval $setvar
  253. !     ;;
  254. ! esac
  255.   
  256.   : see if readdir and friends exist
  257.   set readdir d_readdir
  258. ***************
  259. *** 5615,5625 ****
  260. --- 5636,5650 ----
  261.       '') stdio_ptr='((fp)->_IO_read_ptr)'
  262.           ptr_lval=$define
  263.           ;;
  264. +     *)    ptr_lval=$d_stdio_ptr_lval
  265. +         ;;
  266.       esac
  267.       case "$stdio_cnt" in
  268.       '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
  269.           cnt_lval=$undef
  270.           ;;
  271. +     *)    cnt_lval=$d_stdio_cnt_lval
  272. +         ;;
  273.       esac
  274.       case "$stdio_base" in
  275.       '') stdio_base='((fp)->_IO_read_base)';;
  276. ***************
  277. *** 5632,5642 ****
  278. --- 5657,5671 ----
  279.       '') stdio_ptr='((fp)->_ptr)'
  280.           ptr_lval=$define
  281.           ;;
  282. +     *)    ptr_lval=$d_stdio_ptr_lval
  283. +         ;;
  284.       esac
  285.       case "$stdio_cnt" in
  286.       '') stdio_cnt='((fp)->_cnt)'
  287.           cnt_lval=$define
  288.           ;;
  289. +     *)    cnt_lval=$d_stdio_cnt_lval
  290. +         ;;
  291.       esac
  292.       case "$stdio_base" in
  293.       '') stdio_base='((fp)->_base)';;
  294. ***************
  295. *** 6384,6394 ****
  296.       : Check the return type needed for hash 
  297.       echo " "
  298.       echo "Checking return type needed for hash for Berkeley DB ..." >&4
  299. !     $cat >try.c <<'EOCP'
  300.   #include <sys/types.h>
  301.   #include <db.h>
  302.   u_int32_t hash_cb (ptr, size)
  303. ! void *ptr;
  304.   size_t size;
  305.   {
  306.   }
  307. --- 6413,6427 ----
  308.       : Check the return type needed for hash 
  309.       echo " "
  310.       echo "Checking return type needed for hash for Berkeley DB ..." >&4
  311. !     $cat >try.c <<EOCP
  312. ! #$d_const HASCONST
  313. ! #ifndef HASCONST
  314. ! #define const
  315. ! #endif
  316.   #include <sys/types.h>
  317.   #include <db.h>
  318.   u_int32_t hash_cb (ptr, size)
  319. ! const void *ptr;
  320.   size_t size;
  321.   {
  322.   }
  323. ***************
  324. *** 6420,6431 ****
  325.       : Check the return type needed for prefix 
  326.       echo " "
  327.       echo "Checking return type needed for prefix for Berkeley DB ..." >&4
  328. !     cat >try.c <<'EOCP'
  329.   #include <sys/types.h>
  330.   #include <db.h>
  331.   size_t prefix_cb (key1, key2)
  332. ! DBT *key1;
  333. ! DBT *key2;
  334.   {
  335.   }
  336.   BTREEINFO info;
  337. --- 6453,6468 ----
  338.       : Check the return type needed for prefix 
  339.       echo " "
  340.       echo "Checking return type needed for prefix for Berkeley DB ..." >&4
  341. !     cat >try.c <<EOCP
  342. ! #$d_const HASCONST
  343. ! #ifndef HASCONST
  344. ! #define const
  345. ! #endif
  346.   #include <sys/types.h>
  347.   #include <db.h>
  348.   size_t prefix_cb (key1, key2)
  349. ! const DBT *key1;
  350. ! const DBT *key2;
  351.   {
  352.   }
  353.   BTREEINFO info;
  354. Index: MANIFEST
  355. *** perl5.001k/MANIFEST    Tue Jun  6 14:17:58 1995
  356. --- perl5.001l/MANIFEST    Tue Jun  6 14:07:25 1995
  357. ***************
  358. *** 209,216 ****
  359.   hints/mpeix.sh        Hints for named architecture
  360.   hints/ncr_tower.sh    Hints for named architecture
  361.   hints/netbsd.sh        Hints for named architecture
  362.   hints/next_3_0.sh    Hints for named architecture
  363. - hints/next_3_2.sh    Hints for named architecture
  364.   hints/opus.sh        Hints for named architecture
  365.   hints/powerunix.sh    Hints for named architecture
  366.   hints/sco_2_3_0.sh    Hints for named architecture
  367. --- 209,216 ----
  368.   hints/mpeix.sh        Hints for named architecture
  369.   hints/ncr_tower.sh    Hints for named architecture
  370.   hints/netbsd.sh        Hints for named architecture
  371. + hints/next_3.sh        Hints for named architecture
  372.   hints/next_3_0.sh    Hints for named architecture
  373.   hints/opus.sh        Hints for named architecture
  374.   hints/powerunix.sh    Hints for named architecture
  375.   hints/sco_2_3_0.sh    Hints for named architecture
  376. Index: config_H
  377. Prereq:  3.0.1.3 
  378. *** perl5.001k/config_H    Mon Jun  5 12:19:31 1995
  379. --- perl5.001l/config_H    Tue Jun  6 13:16:32 1995
  380. ***************
  381. *** 14,20 ****
  382.    * $Id: Config_h.U,v 3.0.1.3 1995/01/30 14:25:39 ram Exp $
  383.    */
  384.   
  385. ! /* Configuration time: Fri Jun  2 14:50:10 EDT 1995
  386.    * Configured by: andy
  387.    * Target system: crystal crystal 3.2 2 i386 
  388.    */
  389. --- 14,20 ----
  390.    * $Id: Config_h.U,v 3.0.1.3 1995/01/30 14:25:39 ram Exp $
  391.    */
  392.   
  393. ! /* Configuration time: Tue Jun  6 12:34:26 EDT 1995
  394.    * Configured by: andy
  395.    * Target system: crystal crystal 3.2 2 i386 
  396.    */
  397. ***************
  398. *** 773,781 ****
  399.    */
  400.   #ifdef USE_STDIO_PTR
  401.   #define FILE_ptr(fp)    ((fp)->_ptr)
  402. ! #define STDIO_PTR_LVALUE
  403.   #define FILE_cnt(fp)    ((fp)->_cnt)
  404. ! #define STDIO_CNT_LVALUE
  405.   #endif
  406.   
  407.   /* FILE_base:
  408. --- 773,781 ----
  409.    */
  410.   #ifdef USE_STDIO_PTR
  411.   #define FILE_ptr(fp)    ((fp)->_ptr)
  412. ! #define STDIO_PTR_LVALUE         /**/
  413.   #define FILE_cnt(fp)    ((fp)->_cnt)
  414. ! #define STDIO_CNT_LVALUE         /**/
  415.   #endif
  416.   
  417.   /* FILE_base:
  418. Index: config_h.SH
  419. Prereq:  3.0.1.3 
  420. *** perl5.001k/config_h.SH    Mon Jun  5 12:23:03 1995
  421. --- perl5.001l/config_h.SH    Tue Jun  6 12:29:51 1995
  422. ***************
  423. *** 787,795 ****
  424.    */
  425.   #ifdef USE_STDIO_PTR
  426.   #define FILE_ptr(fp)    $stdio_ptr
  427. ! #$d_stdio_ptr_lval STDIO_PTR_LVALUE
  428.   #define FILE_cnt(fp)    $stdio_cnt
  429. ! #$d_stdio_cnt_lval STDIO_CNT_LVALUE
  430.   #endif
  431.   
  432.   /* FILE_base:
  433. --- 787,795 ----
  434.    */
  435.   #ifdef USE_STDIO_PTR
  436.   #define FILE_ptr(fp)    $stdio_ptr
  437. ! #$d_stdio_ptr_lval STDIO_PTR_LVALUE         /**/
  438.   #define FILE_cnt(fp)    $stdio_cnt
  439. ! #$d_stdio_cnt_lval STDIO_CNT_LVALUE         /**/
  440.   #endif
  441.   
  442.   /* FILE_base:
  443. Index: hints/cxux.sh
  444. *** perl5.001k/hints/cxux.sh    Wed May 31 09:15:30 1995
  445. --- perl5.001l/hints/cxux.sh    Tue Jun  6 11:41:36 1995
  446. ***************
  447. *** 75,104 ****
  448.   lddlflags='-Zlink=so'
  449.   
  450.   # Configure imagines that it sees a pw_quota field, but it is really in a
  451. ! # different structure than the one it thinks it is looking at.  WARNING:
  452. ! # Setting this here in the hints file doesn't help. You need to fix this by
  453. ! # editing config.sh after Configure asks you to fix things with a shell
  454. ! # escape! (Maybe Configure should actually try to compile a routine to
  455. ! # test each field, but what a pain that would be...).
  456. ! #
  457. ! # Perhaps I should create a config.over file and add this to it now?
  458. ! #
  459.   d_pwquota='undef'
  460. - echo ''
  461. - echo ''
  462. - echo WARNING: Edit config.sh when Configure offers to let you do so at the
  463. - echo end of the configuration process and manually change d_pwquota from
  464. - echo define to undef \(or you may want to create a config.over file now\).
  465. - echo ''
  466. - echo ''
  467. - # The following silly shell variable is set just so it will be printed out
  468. - # immediately prior to asking the user to edit config.sh :-).
  469. - #
  470. - dont_forget_to_fix_d_pwquota_in_config_to_be_undef="really"
  471.   
  472. ! # Configure sometime finds what it believes to be ndbm header files on the
  473.   # system and imagines that we have the NDBM library, but we really don't.
  474.   # There is something there that once resembled ndbm, but it is purely
  475.   # for internal use in some tool and has been hacked beyond recognition
  476. --- 75,84 ----
  477.   lddlflags='-Zlink=so'
  478.   
  479.   # Configure imagines that it sees a pw_quota field, but it is really in a
  480. ! # different structure than the one it thinks it is looking at.
  481.   d_pwquota='undef'
  482.   
  483. ! # Configure sometimes finds what it believes to be ndbm header files on the
  484.   # system and imagines that we have the NDBM library, but we really don't.
  485.   # There is something there that once resembled ndbm, but it is purely
  486.   # for internal use in some tool and has been hacked beyond recognition
  487. ***************
  488. *** 110,112 ****
  489. --- 90,101 ----
  490.   #
  491.   d_mymalloc='undef'
  492.   usemymalloc='n'
  493. + cat <<'EOM'
  494. + You will get a failure on lib/posix.t test 16 because ungetc() on
  495. + stdin does not work if no characters have been read from stdin.
  496. + If you type a character at the terminal where you are running
  497. + the tests, you can fool it into thinking it worked.
  498. + EOM
  499. Index: hints/epix.sh
  500. *** perl5.001k/hints/epix.sh    Wed May 31 11:59:28 1995
  501. --- perl5.001l/hints/epix.sh    Mon Jun  5 17:01:13 1995
  502. ***************
  503. *** 61,66 ****
  504. --- 61,68 ----
  505.   fi
  506.   
  507.   lddlflags="-G $ldflags"    # Probably needed for dynamic loading
  508. + # We _do_ want the -L paths in ldflags, but we don't want the -non_shared.
  509. + lddlflags=`echo $lddlflags | sed 's/-non_shared//'`
  510.   
  511.   cat <<'EOM' >&4
  512.   
  513. Index: hints/next_3.sh
  514. *** perl5.001k/hints/next_3.sh    Mon Apr 10 10:14:22 1995
  515. --- perl5.001l/hints/next_3.sh    Tue Jun  6 14:06:24 1995
  516. ***************
  517. *** 1,6 ****
  518. --- 1,10 ----
  519.   # This file has been put together by Anno Siegel <siegel@zrz.TU-Berlin.DE>
  520.   # and Andreas Koenig <k@franz.ww.TU-Berlin.DE>. Comments, questions, and
  521.   # improvements welcome!
  522. + #
  523. + # These hints work for NeXT 3.2 and 3.3.  3.0 has it's own
  524. + # special hint file.
  525.   ccflags='-DUSE_NEXT_CTYPE'
  526.   POSIX_cflags='ccflags="-posix $ccflags"'
  527.   ldflags='-u libsys_s'
  528. ***************
  529. *** 35,38 ****
  530.   if [ `arch` = "hppa" ]; then
  531.   pp_cflags='optimize="-g"'
  532.   fi
  533. --- 39,41 ----
  534. Index: lib/Benchmark.pm
  535. *** perl5.001k/lib/Benchmark.pm    Thu May 25 11:15:48 1995
  536. --- perl5.001l/lib/Benchmark.pm    Tue Jun  6 12:20:18 1995
  537. ***************
  538. *** 242,247 ****
  539. --- 242,248 ----
  540.   # Last updated:    Sept 8th 94 by Tim Bunce
  541.   #
  542.   
  543. + use Carp;
  544.   use Exporter;
  545.   @ISA=(Exporter);
  546.   @EXPORT=qw(timeit timethis timethese timediff timestr);
  547. ***************
  548. *** 315,320 ****
  549. --- 316,325 ----
  550.   
  551.   sub runloop {
  552.       my($n, $c) = @_;
  553. +     $n+=0; # force numeric now, so garbage won't creep into the eval
  554. +     croak "negativ loopcount $n" if $n<0;
  555. +     confess "Usage: runloop(number, string)" unless defined $c;
  556.       my($t0, $t1, $td); # before, after, difference
  557.   
  558.       # find package of caller so we can execute code there
  559. ***************
  560. *** 326,332 ****
  561.   
  562.       my $subcode = "sub { package $pack; my(\$_i)=$n; while (\$_i--){$c;} }";
  563.       my $subref  = eval $subcode;
  564. !     die "runloop unable to compile '$c': $@\ncode: $subcode\n" if $@;
  565.       print STDERR "runloop $n '$subcode'\n" if ($debug);
  566.   
  567.       $t0 = &new;
  568. --- 331,337 ----
  569.   
  570.       my $subcode = "sub { package $pack; my(\$_i)=$n; while (\$_i--){$c;} }";
  571.       my $subref  = eval $subcode;
  572. !     croak "runloop unable to compile '$c': $@\ncode: $subcode\n" if $@;
  573.       print STDERR "runloop $n '$subcode'\n" if ($debug);
  574.   
  575.       $t0 = &new;
  576. Index: op.c
  577. *** perl5.001k/op.c    Wed Mar 15 09:29:47 1995
  578. --- perl5.001l/op.c    Tue Jun  6 12:18:47 1995
  579. ***************
  580. *** 2627,2633 ****
  581.       SAVESPTR(curpad);
  582.       curpad = 0;
  583.   
  584. !     if (!SvFLAGS(cv) & SVpcv_CLONED)
  585.           op_free(CvROOT(cv));
  586.       CvROOT(cv) = Nullop;
  587.       if (CvPADLIST(cv)) {
  588. --- 2627,2633 ----
  589.       SAVESPTR(curpad);
  590.       curpad = 0;
  591.   
  592. !     if (!(SvFLAGS(cv) & SVpcv_CLONED))
  593.           op_free(CvROOT(cv));
  594.       CvROOT(cv) = Nullop;
  595.       if (CvPADLIST(cv)) {
  596. ***************
  597. *** 2761,2766 ****
  598. --- 2761,2767 ----
  599.       CvOUTSIDE(cv) = CvOUTSIDE(compcv);
  600.       CvOUTSIDE(compcv) = 0;
  601.       CvPADLIST(cv) = CvPADLIST(compcv);
  602. +     CvPADLIST(compcv) = 0;
  603.       SvREFCNT_dec(compcv);
  604.       }
  605.       else {
  606. Index: perl.c
  607. *** perl5.001k/perl.c    Thu Jun  1 11:38:05 1995
  608. --- perl5.001l/perl.c    Tue Jun  6 14:41:07 1995
  609. ***************
  610. *** 996,1002 ****
  611.       return s;
  612.       case 'v':
  613.       printf("\nThis is perl, version %s\n\n",patchlevel);
  614. !     fputs("\tUnofficial patchlevel 1j.\n",stdout);
  615.       fputs("\nCopyright 1987-1994, Larry Wall\n",stdout);
  616.   #ifdef MSDOS
  617.       fputs("MS-DOS port Copyright (c) 1989, 1990, Diomidis Spinellis\n",
  618. --- 996,1002 ----
  619.       return s;
  620.       case 'v':
  621.       printf("\nThis is perl, version %s\n\n",patchlevel);
  622. !     fputs("\tUnofficial patchlevel 1l.\n",stdout);
  623.       fputs("\nCopyright 1987-1994, Larry Wall\n",stdout);
  624.   #ifdef MSDOS
  625.       fputs("MS-DOS port Copyright (c) 1989, 1990, Diomidis Spinellis\n",
  626. Index: pp_ctl.c
  627. *** perl5.001k/pp_ctl.c    Wed May 24 11:48:36 1995
  628. --- perl5.001l/pp_ctl.c    Tue Jun  6 12:18:48 1995
  629. ***************
  630. *** 1533,1538 ****
  631. --- 1533,1547 ----
  632.           I32 items = 0;
  633.           I32 oldsave;
  634.   
  635. +         if (!CvROOT(cv) && !CvXSUB(cv)) {
  636. +         if (CvGV(cv)) {
  637. +             SV *tmpstr = sv_newmortal();
  638. +             gv_efullname(tmpstr, CvGV(cv));
  639. +             DIE("Goto undefined subroutine &%s",SvPVX(tmpstr));
  640. +         }
  641. +         DIE("Goto undefined subroutine");
  642. +         }
  643.           /* First do some returnish stuff. */
  644.           cxix = dopoptosub(cxstack_ix);
  645.           if (cxix < 0)
  646. ***************
  647. *** 1591,1597 ****
  648.                   GvENAME(CvGV(cv)));
  649.               if (CvDEPTH(cv) > AvFILL(padlist)) {
  650.               AV *newpad = newAV();
  651. !             AV *oldpad = (AV*)AvARRAY(svp[CvDEPTH(cv)-1]);
  652.               I32 ix = AvFILL((AV*)svp[1]);
  653.               svp = AvARRAY(svp[0]);
  654.               for ( ;ix > 0; ix--) {
  655. --- 1600,1606 ----
  656.                   GvENAME(CvGV(cv)));
  657.               if (CvDEPTH(cv) > AvFILL(padlist)) {
  658.               AV *newpad = newAV();
  659. !             SV **oldpad = AvARRAY(svp[CvDEPTH(cv)-1]);
  660.               I32 ix = AvFILL((AV*)svp[1]);
  661.               svp = AvARRAY(svp[0]);
  662.               for ( ;ix > 0; ix--) {
  663. ***************
  664. *** 1600,1606 ****
  665.                   if (SvFLAGS(svp[ix]) & SVf_FAKE) {
  666.                       /* outer lexical? */
  667.                       av_store(newpad, ix,
  668. !                     SvREFCNT_inc(AvARRAY(oldpad)[ix]) );
  669.                   }
  670.                   else {        /* our own lexical */
  671.                       if (*name == '@')
  672. --- 1609,1615 ----
  673.                   if (SvFLAGS(svp[ix]) & SVf_FAKE) {
  674.                       /* outer lexical? */
  675.                       av_store(newpad, ix,
  676. !                     SvREFCNT_inc(oldpad[ix]) );
  677.                   }
  678.                   else {        /* our own lexical */
  679.                       if (*name == '@')
  680. Index: pp_hot.c
  681. *** perl5.001k/pp_hot.c    Thu May 25 14:27:29 1995
  682. --- perl5.001l/pp_hot.c    Tue Jun  6 12:18:49 1995
  683. ***************
  684. *** 1687,1693 ****
  685.           if (CvDEPTH(cv) > AvFILL(padlist)) {
  686.           AV *av;
  687.           AV *newpad = newAV();
  688. !         AV *oldpad = (AV*)AvARRAY(svp[CvDEPTH(cv)-1]);
  689.           I32 ix = AvFILL((AV*)svp[1]);
  690.           svp = AvARRAY(svp[0]);
  691.           for ( ;ix > 0; ix--) {
  692. --- 1687,1693 ----
  693.           if (CvDEPTH(cv) > AvFILL(padlist)) {
  694.           AV *av;
  695.           AV *newpad = newAV();
  696. !         SV **oldpad = AvARRAY(svp[CvDEPTH(cv)-1]);
  697.           I32 ix = AvFILL((AV*)svp[1]);
  698.           svp = AvARRAY(svp[0]);
  699.           for ( ;ix > 0; ix--) {
  700. ***************
  701. *** 1695,1701 ****
  702.               char *name = SvPVX(svp[ix]);
  703.               if (SvFLAGS(svp[ix]) & SVf_FAKE) { /* outer lexical? */
  704.                   av_store(newpad, ix,
  705. !                 SvREFCNT_inc(AvARRAY(oldpad)[ix]) );
  706.               }
  707.               else {                /* our own lexical */
  708.                   if (*name == '@')
  709. --- 1695,1701 ----
  710.               char *name = SvPVX(svp[ix]);
  711.               if (SvFLAGS(svp[ix]) & SVf_FAKE) { /* outer lexical? */
  712.                   av_store(newpad, ix,
  713. !                 SvREFCNT_inc(oldpad[ix]) );
  714.               }
  715.               else {                /* our own lexical */
  716.                   if (*name == '@')
  717. Index: scope.c
  718. *** perl5.001k/scope.c    Tue Jan 17 15:50:19 1995
  719. --- perl5.001l/scope.c    Tue Jun  6 12:18:49 1995
  720. ***************
  721. *** 276,282 ****
  722.   IV *ivp;
  723.   {
  724.       SSCHECK(3);
  725. !     SSPUSHINT(*ivp);
  726.       SSPUSHPTR(ivp);
  727.       SSPUSHINT(SAVEt_IV);
  728.   }
  729. --- 276,282 ----
  730.   IV *ivp;
  731.   {
  732.       SSCHECK(3);
  733. !     SSPUSHIV(*ivp);
  734.       SSPUSHPTR(ivp);
  735.       SSPUSHINT(SAVEt_IV);
  736.   }
  737. ***************
  738. *** 365,371 ****
  739.   SV** svp;
  740.   {
  741.       SSCHECK(2);
  742. !     SSPUSHPTR(svp);
  743.       SSPUSHINT(SAVEt_CLEARSV);
  744.   }
  745.   
  746. --- 365,371 ----
  747.   SV** svp;
  748.   {
  749.       SSCHECK(2);
  750. !     SSPUSHLONG((long)(svp-curpad));
  751.       SSPUSHINT(SAVEt_CLEARSV);
  752.   }
  753.   
  754. ***************
  755. *** 540,546 ****
  756.           Safefree((char*)ptr);
  757.           break;
  758.       case SAVEt_CLEARSV:
  759. !         ptr = SSPOPPTR;
  760.           sv = *(SV**)ptr;
  761.           if (SvREFCNT(sv) <= 1) { /* Can clear pad variable in place. */
  762.           if (SvTHINKFIRST(sv)) {
  763. --- 540,546 ----
  764.           Safefree((char*)ptr);
  765.           break;
  766.       case SAVEt_CLEARSV:
  767. !         ptr = (void*)&curpad[SSPOPLONG];
  768.           sv = *(SV**)ptr;
  769.           if (SvREFCNT(sv) <= 1) { /* Can clear pad variable in place. */
  770.           if (SvTHINKFIRST(sv)) {
  771. ***************
  772. *** 573,584 ****
  773. --- 573,586 ----
  774.           }
  775.           }
  776.           else {    /* Someone has a claim on this, so abandon it. */
  777. +         U32 padflags = SvFLAGS(sv) & (SVs_PADBUSY|SVs_PADMY|SVs_PADTMP);
  778.           SvREFCNT_dec(sv);    /* Cast current value to the winds. */
  779.           switch (SvTYPE(sv)) {    /* Console ourselves with a new value */
  780.           case SVt_PVAV:    *(SV**)ptr = (SV*)newAV();    break;
  781.           case SVt_PVHV:    *(SV**)ptr = (SV*)newHV();    break;
  782.           default:    *(SV**)ptr = NEWSV(0,0);    break;
  783.           }
  784. +         SvFLAGS(*(SV**)ptr) |= padflags; /* preserve pad nature */
  785.           }
  786.           break;
  787.       case SAVEt_DELETE:
  788.  
  789.  
  790. End of patch.
  791.  
  792.