summaryrefslogtreecommitdiff
path: root/perl.c
diff options
context:
space:
mode:
Diffstat (limited to 'perl.c')
-rw-r--r--perl.c19
1 files changed, 11 insertions, 8 deletions
diff --git a/perl.c b/perl.c
index 77bcb4d02c..1e3c6fd886 100644
--- a/perl.c
+++ b/perl.c
@@ -476,9 +476,11 @@ setuid perl scripts securely.\n");
return 0;
}
+ SvREFCNT_dec(main_cv);
if (main_root)
op_free(main_root);
- main_root = 0;
+ main_cv = 0;
+ main_start = main_root = 0;
time(&basetime);
@@ -687,7 +689,7 @@ setuid perl scripts securely.\n");
if (doextract)
find_beginning();
- compcv = (CV*)NEWSV(1104,0);
+ main_cv = compcv = (CV*)NEWSV(1104,0);
sv_upgrade((SV *)compcv, SVt_PVCV);
CvUNIQUE_on(compcv);
@@ -819,6 +821,7 @@ PerlInterpreter *sv_interp;
runops();
}
else if (main_start) {
+ CvDEPTH(main_cv) = 1;
op = main_start;
runops();
}
@@ -2348,7 +2351,7 @@ int addsubdirs;
if (addsubdirs) {
struct stat tmpstatbuf;
- /* .../archname/version if -d .../archname/auto */
+ /* .../archname/version if -d .../archname/version/auto */
sv_setsv(subdir, libdir);
sv_catpv(subdir, archpat_auto);
if (Stat(SvPVX(subdir), &tmpstatbuf) >= 0 &&
@@ -2356,7 +2359,7 @@ int addsubdirs;
av_push(GvAVn(incgv),
newSVpv(SvPVX(subdir), SvCUR(subdir) - sizeof "auto"));
- /* .../archname/version if -d .../archname/version/auto */
+ /* .../archname if -d .../archname/auto */
sv_insert(subdir, SvCUR(libdir) + sizeof(ARCHNAME),
strlen(patchlevel) + 1, "", 0);
if (Stat(SvPVX(subdir), &tmpstatbuf) >= 0 &&
@@ -2464,14 +2467,14 @@ my_failure_exit()
{
#ifdef VMS
if (vaxc$errno & 1) {
- if (GETSTATUS_NATIVE & 1) /* fortuitiously includes "-1" */
- SETSTATUS_NATIVE(44);
+ if (STATUS_NATIVE & 1) /* fortuitiously includes "-1" */
+ STATUS_NATIVE_SET(44);
}
else {
if (!vaxc$errno && errno) /* someone must have set $^E = 0 */
- SETSTATUS_NATIVE(44);
+ STATUS_NATIVE_SET(44);
else
- SETSTATUS_NATIVE(vaxc$errno);
+ STATUS_NATIVE_SET(vaxc$errno);
}
#else
if (errno & 255)