Change 23667 by [EMAIL PROTECTED] on 2004/12/21 20:56:58

        Move the setting of $^X ahead of the initialisation of @INC

Affected files ...

... //depot/perl/perl.c#572 edit

Differences ...

==== //depot/perl/perl.c#572 (text) ====
Index: perl/perl.c
--- perl/perl.c#571~23617~      Mon Dec  6 07:35:39 2004
+++ perl/perl.c Tue Dec 21 12:56:58 2004
@@ -967,6 +967,23 @@
     ++PL_exitlistlen;
 }
 
+
+STATIC void
+S_set_caret_X(pTHX) {
+    GV* tmpgv = gv_fetchpv("\030",TRUE, SVt_PV); /* $^X */
+    if (tmpgv) {
+#ifdef HAS_PROCSELFEXE
+       S_procself_val(aTHX_ GvSV(tmpgv), PL_origargv[0]);
+#else
+#ifdef OS2
+       sv_setpv(GvSV(tmpgv), os2_execname(aTHX));
+#else
+       sv_setpv(GvSV(tmpgv),PL_origargv[0]);
+#endif
+#endif
+    }
+}
+
 /*
 =for apidoc perl_parse
 
@@ -1112,6 +1129,10 @@
        PL_do_undump = FALSE;
        cxstack_ix = -1;                /* start label stack again */
        init_ids();
+       assert (!PL_tainted);
+       TAINT;
+       S_set_caret_X(aTHX);
+       TAINT_NOT;
        init_postdump_symbols(argc,argv,env);
        return 0;
     }
@@ -1494,6 +1515,11 @@
        scriptname = "-";
     }
 
+    /* Set $^X early so that it can be used for relocatable paths in @INC  */
+    assert (!PL_tainted);
+    TAINT;
+    S_set_caret_X(aTHX);
+    TAINT_NOT;
     init_perllib();
 
     open_script(scriptname,dosearch,sv);
@@ -4052,22 +4078,6 @@
 #endif /* HAS_PROCSELFEXE */
 
 STATIC void
-S_set_caret_X(pTHX) {
-    GV* tmpgv = gv_fetchpv("\030",TRUE, SVt_PV); /* $^X */
-    if (tmpgv) {
-#ifdef HAS_PROCSELFEXE
-       S_procself_val(aTHX_ GvSV(tmpgv), PL_origargv[0]);
-#else
-#ifdef OS2
-       sv_setpv(GvSV(tmpgv), os2_execname(aTHX));
-#else
-       sv_setpv(GvSV(tmpgv),PL_origargv[0]);
-#endif
-#endif
-    }
-}
-
-STATIC void
 S_init_postdump_symbols(pTHX_ register int argc, register char **argv, 
register char **env)
 {
     char *s;
@@ -4095,7 +4105,6 @@
        magicname("0", "0", 1);
 #endif
     }
-    S_set_caret_X(aTHX);
     if ((PL_envgv = gv_fetchpv("ENV",TRUE, SVt_PVHV))) {
        HV *hv;
        GvMULTI_on(PL_envgv);
End of Patch.

Reply via email to