X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=sv.c;h=fc89183c775c6f5d4bf3e79b96f3c65d6801be05;hb=360321b398f5e797c408b6d6c60b7da3cca5e324;hp=1b2a0c4eadedfe831522baabaf31d115bdc08e3d;hpb=0be7d46277584d2aedd86c792092a306a69a45b8;p=p5sagit%2Fp5-mst-13.2.git diff --git a/sv.c b/sv.c index 1b2a0c4..fc89183 100644 --- a/sv.c +++ b/sv.c @@ -188,11 +188,7 @@ Perl_offer_nice_chunk(pTHX_ void *chunk, U32 chunk_size) } #ifdef DEBUG_LEAKING_SCALARS -# ifdef NETWARE -# define FREE_SV_DEBUG_FILE(sv) PerlMemfree((sv)->sv_debug_file) -# else -# define FREE_SV_DEBUG_FILE(sv) PerlMemShared_free((sv)->sv_debug_file) -# endif +# define FREE_SV_DEBUG_FILE(sv) Safefree((sv)->sv_debug_file) #else # define FREE_SV_DEBUG_FILE(sv) #endif @@ -260,11 +256,7 @@ S_new_SV(pTHX) (PL_curcop ? CopLINE(PL_curcop) : 0) : PL_copline); sv->sv_debug_inpad = 0; sv->sv_debug_cloned = 0; -# ifdef NETWARE sv->sv_debug_file = PL_curcop ? savepv(CopFILE(PL_curcop)): NULL; -# else - sv->sv_debug_file = PL_curcop ? savesharedpv(CopFILE(PL_curcop)): NULL; -# endif return sv; } @@ -437,18 +429,19 @@ Perl_sv_report_used(pTHX) static void do_clean_objs(pTHX_ SV *ref) { - SV* target; - - if (SvROK(ref) && SvOBJECT(target = SvRV(ref))) { - DEBUG_D((PerlIO_printf(Perl_debug_log, "Cleaning object ref:\n "), sv_dump(ref))); - if (SvWEAKREF(ref)) { - sv_del_backref(target, ref); - SvWEAKREF_off(ref); - SvRV_set(ref, NULL); - } else { - SvROK_off(ref); - SvRV_set(ref, NULL); - SvREFCNT_dec(target); + if (SvROK(ref)) { + SV * const target = SvRV(ref); + if (SvOBJECT(target)) { + DEBUG_D((PerlIO_printf(Perl_debug_log, "Cleaning object ref:\n "), sv_dump(ref))); + if (SvWEAKREF(ref)) { + sv_del_backref(target, ref); + SvWEAKREF_off(ref); + SvRV_set(ref, NULL); + } else { + SvROK_off(ref); + SvRV_set(ref, NULL); + SvREFCNT_dec(target); + } } } @@ -1860,7 +1853,7 @@ S_not_a_number(pTHX_ SV *sv) pv = sv_uni_display(dsv, sv, 10, 0); } else { char *d = tmpbuf; - char *limit = tmpbuf + sizeof(tmpbuf) - 8; + const char * const limit = tmpbuf + sizeof(tmpbuf) - 8; /* each *s can expand to 4 chars + "...\0", i.e. need room for 8 chars */ @@ -2121,11 +2114,13 @@ Perl_sv_2iv_flags(pTHX_ register SV *sv, I32 flags) } if (SvTHINKFIRST(sv)) { if (SvROK(sv)) { - SV* tmpstr; - if (SvAMAGIC(sv) && (tmpstr=AMG_CALLun(sv,numer)) && - (!SvROK(tmpstr) || (SvRV(tmpstr) != SvRV(sv)))) - return SvIV(tmpstr); - return PTR2IV(SvRV(sv)); + if (SvAMAGIC(sv)) { + SV * const tmpstr=AMG_CALLun(sv,numer); + if (tmpstr && (!SvROK(tmpstr) || (SvRV(tmpstr) != SvRV(sv)))) { + return SvIV(tmpstr); + } + } + return PTR2IV(SvRV(sv)); } if (SvIsCOW(sv)) { sv_force_normal_flags(sv, 0); @@ -2959,7 +2954,7 @@ static char * S_uiv_2buf(char *buf, IV iv, UV uv, int is_uv, char **peob) { char *ptr = buf + TYPE_CHARS(UV); - char *ebuf = ptr; + char * const ebuf = ptr; int sign; if (is_uv) @@ -3278,7 +3273,7 @@ Perl_sv_2pv_flags(pTHX_ register SV *sv, STRLEN *lp, I32 flags) return (char *)""; } { - STRLEN len = s - SvPVX_const(sv); + const STRLEN len = s - SvPVX_const(sv); if (lp) *lp = len; SvCUR_set(sv, len); @@ -3919,7 +3914,7 @@ Perl_sv_setsv_flags(pTHX_ SV *dstr, register SV *sstr, I32 flags) if (sflags & SVf_ROK) { if (dtype >= SVt_PV) { if (dtype == SVt_PVGV) { - SV *sref = SvREFCNT_inc(SvRV(sstr)); + SV * const sref = SvREFCNT_inc(SvRV(sstr)); SV *dref = 0; const int intro = GvINTRO(dstr); @@ -3973,7 +3968,7 @@ Perl_sv_setsv_flags(pTHX_ SV *dstr, register SV *sstr, I32 flags) else dref = (SV*)GvCV(dstr); if (GvCV(dstr) != (CV*)sref) { - CV* cv = GvCV(dstr); + CV* const cv = GvCV(dstr); if (cv) { if (!GvCVGEN((GV*)dstr) && (CvROOT(cv) || CvXSUB(cv))) @@ -6797,7 +6792,7 @@ thats_really_all_folks: screamer2: if (rslen) { - const register STDCHAR *bpe = buf + sizeof(buf); + register const STDCHAR *bpe = buf + sizeof(buf); bp = buf; while ((i = PerlIO_getc(fp)) != EOF && (*bp++ = (STDCHAR)i) != rslast && bp < bpe) ; /* keep reading */ @@ -7688,7 +7683,7 @@ Perl_sv_2cv(pTHX_ SV *sv, HV **st, GV **gvp, I32 lref) default: SvGETMAGIC(sv); if (SvROK(sv)) { - SV **sp = &sv; /* Used in tryAMAGICunDEREF macro. */ + SV * const *sp = &sv; /* Used in tryAMAGICunDEREF macro. */ tryAMAGICunDEREF(to_cv); sv = SvRV(sv); @@ -7749,8 +7744,8 @@ Perl_sv_true(pTHX_ register SV *sv) if (!sv) return 0; if (SvPOK(sv)) { - const register XPV* tXpv; - if ((tXpv = (XPV*)SvANY(sv)) && + register const XPV* const tXpv = (XPV*)SvANY(sv); + if (tXpv && (tXpv->xpv_cur > 1 || (tXpv->xpv_cur && *sv->sv_u.svu_pv != '0'))) return 1; @@ -8483,7 +8478,7 @@ bool Perl_sv_tainted(pTHX_ SV *sv) { if (SvTYPE(sv) >= SVt_PVMG && SvMAGIC(sv)) { - MAGIC * const mg = mg_find(sv, PERL_MAGIC_taint); + const MAGIC * const mg = mg_find(sv, PERL_MAGIC_taint); if (mg && (mg->mg_len & 1) ) return TRUE; } @@ -10350,8 +10345,7 @@ Perl_sv_dup(pTHX_ SV *sstr, CLONE_PARAMS* param) if(SvTYPE(sstr) == SVt_PVHV && (hvname = HvNAME_get(sstr))) { /** don't clone stashes if they already exist **/ - HV* old_stash = gv_stashpv(hvname,0); - return (SV*) old_stash; + return (SV*)gv_stashpv(hvname,0); } }