perl 5.003_05: hints/convexos.sh
[p5sagit/p5-mst-13.2.git] / pp_hot.c
index a0f85f5..4cd9eb1 100644 (file)
--- a/pp_hot.c
+++ b/pp_hot.c
@@ -252,7 +252,7 @@ PP(pp_preinc)
 {
     dSP;
     if (SvIOK(TOPs)) {
-       if (SvIVX(TOPs) == PERL_LONG_MAX) {
+       if (SvIVX(TOPs) == IV_MAX) {
            sv_setnv(TOPs, (double)(SvIVX(TOPs)) + 1.0 );
        }
        else {
@@ -321,15 +321,30 @@ PP(pp_print)
     GV *gv;
     IO *io;
     register PerlIO *fp;
+    MAGIC *mg;
 
     if (op->op_flags & OPf_STACKED)
        gv = (GV*)*++MARK;
     else
        gv = defoutgv;
+    if (SvMAGICAL(gv) && (mg = mg_find((SV*)gv, 'q'))) {
+       SV *sv;
+
+       PUSHMARK(MARK-1);
+       *MARK = mg->mg_obj;
+       ENTER;
+       perl_call_method("PRINT", G_SCALAR);
+       LEAVE;
+       SPAGAIN;
+       sv = POPs;
+       SP = ORIGMARK;
+       PUSHs(sv);
+       RETURN;
+    }
     if (!(io = GvIO(gv))) {
        if (dowarn) {
            SV* sv = sv_newmortal();
-            gv_fullname(sv,gv);
+            gv_fullname(sv, gv, Nullch);
             warn("Filehandle %s never opened", SvPV(sv,na));
         }
 
@@ -339,7 +354,7 @@ PP(pp_print)
     else if (!(fp = IoOFP(io))) {
        if (dowarn)  {
            SV* sv = sv_newmortal();
-            gv_fullname(sv,gv);
+            gv_fullname(sv, gv, Nullch);
            if (IoIFP(io))
                warn("Filehandle %s opened only for input", SvPV(sv,na));
            else
@@ -822,7 +837,7 @@ play_it_again:
        }
        else if (!multiline) {
            if (*SvPVX(pm->op_pmshort) != *s ||
-             bcmp(SvPVX(pm->op_pmshort), s, pm->op_pmslen) ) {
+             memcmp(SvPVX(pm->op_pmshort), s, pm->op_pmslen) ) {
                if (pm->op_pmflags & PMf_FOLD) {
                    if (ibcmp((U8*)SvPVX(pm->op_pmshort), (U8*)s, pm->op_pmslen) )
                        goto nope;
@@ -1386,7 +1401,7 @@ PP(pp_subst)
        }
        else if (!multiline) {
            if (*SvPVX(pm->op_pmshort) != *s ||
-             bcmp(SvPVX(pm->op_pmshort), s, pm->op_pmslen) ) {
+             memcmp(SvPVX(pm->op_pmshort), s, pm->op_pmslen) ) {
                if (pm->op_pmflags & PMf_FOLD) {
                    if (ibcmp((U8*)SvPVX(pm->op_pmshort), (U8*)s, pm->op_pmslen) )
                        goto nope;
@@ -1720,7 +1735,7 @@ PP(pp_entersub)
                goto retry;
            }
            tmpstr = sv_newmortal();
-           gv_efullname(tmpstr, gv);
+           gv_efullname(tmpstr, gv, Nullch);
            ngv = gv_fetchmethod(GvESTASH(gv), "AUTOLOAD");
            if (ngv && ngv != gv && (cv = GvCV(ngv))) { /* One more chance... */
                gv = ngv;
@@ -1746,7 +1761,7 @@ PP(pp_entersub)
            sv_setsv(sv, newRV((SV*)cv));
        }
        else {
-           gv_efullname(sv,gv);
+           gv_efullname(sv, gv, Nullch);
        }
        cv = GvCV(DBsub);
        if (CvXSUB(cv)) curcopdb = curcop;