Integrate perlio:
[p5sagit/p5-mst-13.2.git] / perl.c
diff --git a/perl.c b/perl.c
index b1d70b1..3e999c4 100644 (file)
--- a/perl.c
+++ b/perl.c
@@ -253,9 +253,10 @@ perl_construct(pTHXx)
        if (PERL_REVISION > 127 || PERL_VERSION > 127 || PERL_SUBVERSION > 127)
            SvGROW(PL_patchlevel, UTF8_MAXLEN*3+1);
        s = (U8*)SvPVX(PL_patchlevel);
-       s = uv_to_utf8(s, (UV)PERL_REVISION);
-       s = uv_to_utf8(s, (UV)PERL_VERSION);
-       s = uv_to_utf8(s, (UV)PERL_SUBVERSION);
+       /* Build version strings using "native" characters */
+       s = uvchr_to_utf8(s, (UV)PERL_REVISION);
+       s = uvchr_to_utf8(s, (UV)PERL_VERSION);
+       s = uvchr_to_utf8(s, (UV)PERL_SUBVERSION);
        *s = '\0';
        SvCUR_set(PL_patchlevel, s - (U8*)SvPVX(PL_patchlevel));
        SvPOK_on(PL_patchlevel);
@@ -745,6 +746,7 @@ perl_destruct(pTHXx)
     Safefree(PL_op_mask);
     Safefree(PL_psig_ptr);
     Safefree(PL_psig_name);
+    Safefree(PL_bitcount);
     Safefree(PL_psig_pend);
     nuke_stacks();
     PL_hints = 0;              /* Reset hints. Should hints be per-interpreter ? */
@@ -2125,7 +2127,8 @@ Perl_moreswitches(pTHX_ char *s)
 #ifdef DEBUGGING
        forbid_setid("-D");
        if (isALPHA(s[1])) {
-           static char debopts[] = "psltocPmfrxuLHXDST";
+           /* if adding extra options, remember to update DEBUG_MASK */
+           static char debopts[] = "psltocPmfrxuLHXDSTR";
            char *d;
 
            for (s++; *s && (d = strchr(debopts,*s)); s++)
@@ -2135,7 +2138,7 @@ Perl_moreswitches(pTHX_ char *s)
            PL_debug = atoi(s+1);
            for (s++; isDIGIT(*s); s++) ;
        }
-       PL_debug |= 0x80000000;
+       PL_debug |= DEBUG_TOP_FLAG;
 #else
        if (ckWARN_d(WARN_DEBUGGING))
            Perl_warner(aTHX_ WARN_DEBUGGING,
@@ -3355,7 +3358,7 @@ S_init_postdump_symbols(pTHX_ register int argc, register char **argv, register
 #ifdef NEED_ENVIRON_DUP_FOR_MODIFY
        {
            char **env_base;
-           for (env_base = env; *env; env++) 
+           for (env_base = env; *env; env++)
                dup_env_count++;
            if ((dup_env_base = (char **)
                 safesysmalloc( sizeof(char *) * (dup_env_count+1) ))) {