This is a live mirror of the Perl 5 development currently hosted at
https://github.com/perl/perl5
https://perl5.git.perl.org
/
perl5.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
assert() that we can't reach two unreachable code paths
[perl5.git]
/
op.c
diff --git
a/op.c
b/op.c
index
710d657
..
9668905
100644
(file)
--- a/
op.c
+++ b/
op.c
@@
-146,14
+146,14
@@
Perl_Slab_Free(pTHX_ void *op)
}
#endif
/*
}
#endif
/*
- * In the following definition, the ",
Nullop
" is just to make the compiler
+ * In the following definition, the ",
(OP*)0
" is just to make the compiler
* think the expression is of the right type: croak actually does a Siglongjmp.
*/
#define CHECKOP(type,o) \
* think the expression is of the right type: croak actually does a Siglongjmp.
*/
#define CHECKOP(type,o) \
- ((PL_op_mask && PL_op_mask[type])
\
+ ((PL_op_mask && PL_op_mask[type]) \
? ( op_free((OP*)o), \
Perl_croak(aTHX_ "'%s' trapped by operation mask", PL_op_desc[type]), \
? ( op_free((OP*)o), \
Perl_croak(aTHX_ "'%s' trapped by operation mask", PL_op_desc[type]), \
-
Nullop
) \
+
(OP*)0
) \
: CALL_FPTR(PL_check[type])(aTHX_ (OP*)o))
#define RETURN_UNLIMITED_NUMBER (PERL_INT_MAX / 2)
: CALL_FPTR(PL_check[type])(aTHX_ (OP*)o))
#define RETURN_UNLIMITED_NUMBER (PERL_INT_MAX / 2)
@@
-162,7
+162,7
@@
STATIC const char*
S_gv_ename(pTHX_ GV *gv)
{
SV* const tmpsv = sv_newmortal();
S_gv_ename(pTHX_ GV *gv)
{
SV* const tmpsv = sv_newmortal();
- gv_efullname3(tmpsv, gv, N
ullch
);
+ gv_efullname3(tmpsv, gv, N
ULL
);
return SvPV_nolen_const(tmpsv);
}
return SvPV_nolen_const(tmpsv);
}
@@
-316,7
+316,7
@@
Perl_op_free(pTHX_ OP *o)
FreeOp(o);
#ifdef DEBUG_LEAKING_SCALARS
if (PL_op == o)
FreeOp(o);
#ifdef DEBUG_LEAKING_SCALARS
if (PL_op == o)
- PL_op = N
ullop
;
+ PL_op = N
ULL
;
#endif
}
#endif
}
@@
-349,14
+349,14
@@
Perl_op_clear(pTHX_ OP *o)
}
#else
SvREFCNT_dec(cSVOPo->op_sv);
}
#else
SvREFCNT_dec(cSVOPo->op_sv);
- cSVOPo->op_sv = N
ullsv
;
+ cSVOPo->op_sv = N
ULL
;
#endif
}
break;
case OP_METHOD_NAMED:
case OP_CONST:
SvREFCNT_dec(cSVOPo->op_sv);
#endif
}
break;
case OP_METHOD_NAMED:
case OP_CONST:
SvREFCNT_dec(cSVOPo->op_sv);
- cSVOPo->op_sv = N
ullsv
;
+ cSVOPo->op_sv = N
ULL
;
#ifdef USE_ITHREADS
/** Bug #15654
Even if op_clear does a pad_free for the target of the op,
#ifdef USE_ITHREADS
/** Bug #15654
Even if op_clear does a pad_free for the target of the op,
@@
-380,11
+380,11
@@
Perl_op_clear(pTHX_ OP *o)
case OP_TRANS:
if (o->op_private & (OPpTRANS_FROM_UTF|OPpTRANS_TO_UTF)) {
SvREFCNT_dec(cSVOPo->op_sv);
case OP_TRANS:
if (o->op_private & (OPpTRANS_FROM_UTF|OPpTRANS_TO_UTF)) {
SvREFCNT_dec(cSVOPo->op_sv);
- cSVOPo->op_sv = N
ullsv
;
+ cSVOPo->op_sv = N
ULL
;
}
else {
Safefree(cPVOPo->op_pv);
}
else {
Safefree(cPVOPo->op_pv);
- cPVOPo->op_pv = N
ullch
;
+ cPVOPo->op_pv = N
ULL
;
}
break;
case OP_SUBST:
}
break;
case OP_SUBST:
@@
-426,7
+426,7
@@
clear_pmop:
}
PmopSTASH_free(cPMOPo);
}
}
PmopSTASH_free(cPMOPo);
}
- cPMOPo->op_pmreplroot = N
ullop
;
+ cPMOPo->op_pmreplroot = N
ULL
;
/* we use the "SAFE" version of the PM_ macros here
* since sv_clean_all might release some PMOPs
* after PL_regex_padav has been cleared
/* we use the "SAFE" version of the PM_ macros here
* since sv_clean_all might release some PMOPs
* after PL_regex_padav has been cleared
@@
-434,7
+434,7
@@
clear_pmop:
* happen before sv_clean_all
*/
ReREFCNT_dec(PM_GETRE_SAFE(cPMOPo));
* happen before sv_clean_all
*/
ReREFCNT_dec(PM_GETRE_SAFE(cPMOPo));
- PM_SETRE_SAFE(cPMOPo,
(REGEXP*)
NULL);
+ PM_SETRE_SAFE(cPMOPo, NULL);
#ifdef USE_ITHREADS
if(PL_regex_pad) { /* We could be in destruction */
av_push((AV*) PL_regex_pad[0],(SV*) PL_regex_pad[(cPMOPo)->op_pmoffset]);
#ifdef USE_ITHREADS
if(PL_regex_pad) { /* We could be in destruction */
av_push((AV*) PL_regex_pad[0],(SV*) PL_regex_pad[(cPMOPo)->op_pmoffset]);
@@
-1104,7
+1104,7
@@
Perl_mod(pTHX_ OP *o, I32 type)
NewOp(1101, newop, 1, UNOP);
newop->op_type = OP_RV2CV;
newop->op_ppaddr = PL_ppaddr[OP_RV2CV];
NewOp(1101, newop, 1, UNOP);
newop->op_type = OP_RV2CV;
newop->op_ppaddr = PL_ppaddr[OP_RV2CV];
- newop->op_first = N
ullop
;
+ newop->op_first = N
ULL
;
newop->op_next = (OP*)newop;
kid->op_sibling = (OP*)newop;
newop->op_private |= OPpLVAL_INTRO;
newop->op_next = (OP*)newop;
kid->op_sibling = (OP*)newop;
newop->op_private |= OPpLVAL_INTRO;
@@
-1138,7
+1138,7
@@
Perl_mod(pTHX_ OP *o, I32 type)
kid->op_next = okid;
}
else
kid->op_next = okid;
}
else
- okid->op_next = N
ullop
;
+ okid->op_next = N
ULL
;
okid->op_type = OP_RV2CV;
okid->op_targ = 0;
okid->op_ppaddr = PL_ppaddr[OP_RV2CV];
okid->op_type = OP_RV2CV;
okid->op_targ = 0;
okid->op_ppaddr = PL_ppaddr[OP_RV2CV];
@@
-1157,9
+1157,8
@@
Perl_mod(pTHX_ OP *o, I32 type)
/* FALL THROUGH */
default:
nomod:
/* FALL THROUGH */
default:
nomod:
- /* grep, foreach, subcalls, refgen, m//g */
- if (type == OP_GREPSTART || type == OP_ENTERSUB || type == OP_REFGEN
- || type == OP_MATCH)
+ /* grep, foreach, subcalls, refgen */
+ if (type == OP_GREPSTART || type == OP_ENTERSUB || type == OP_REFGEN)
break;
yyerror(Perl_form(aTHX_ "Can't modify %s in %s",
(o->op_type == OP_NULL && (o->op_flags & OPf_SPECIAL)
break;
yyerror(Perl_form(aTHX_ "Can't modify %s in %s",
(o->op_type == OP_NULL && (o->op_flags & OPf_SPECIAL)
@@
-1363,7
+1362,7
@@
Perl_mod(pTHX_ OP *o, I32 type)
}
STATIC bool
}
STATIC bool
-S_scalar_mod_type(
pTHX_
const OP *o, I32 type)
+S_scalar_mod_type(const OP *o, I32 type)
{
switch (type) {
case OP_SASSIGN:
{
switch (type) {
case OP_SASSIGN:
@@
-1410,7
+1409,7
@@
S_scalar_mod_type(pTHX_ const OP *o, I32 type)
}
STATIC bool
}
STATIC bool
-S_is_handle_constructor(
pTHX_
const OP *o, I32 numargs)
+S_is_handle_constructor(const OP *o, I32 numargs)
{
switch (o->op_type) {
case OP_PIPE_OP:
{
switch (o->op_type) {
case OP_PIPE_OP:
@@
-1426,7
+1425,7
@@
S_is_handle_constructor(pTHX_ const OP *o, I32 numargs)
case OP_ACCEPT:
if (numargs == 1)
return TRUE;
case OP_ACCEPT:
if (numargs == 1)
return TRUE;
- /* FALL
THROUGH */
+ /* FALLTHROUGH */
default:
return FALSE;
}
default:
return FALSE;
}
@@
-1552,7
+1551,7
@@
S_dup_attrlist(pTHX_ OP *o)
rop = newSVOP(OP_CONST, o->op_flags, SvREFCNT_inc(cSVOPo->op_sv));
else {
assert((o->op_type == OP_LIST) && (o->op_flags & OPf_KIDS));
rop = newSVOP(OP_CONST, o->op_flags, SvREFCNT_inc(cSVOPo->op_sv));
else {
assert((o->op_type == OP_LIST) && (o->op_flags & OPf_KIDS));
- rop = N
ullop
;
+ rop = N
ULL
;
for (o = cLISTOPo->op_first; o; o=o->op_sibling) {
if (o->op_type == OP_CONST)
rop = append_elem(OP_LIST, rop,
for (o = cLISTOPo->op_first; o; o=o->op_sibling) {
if (o->op_type == OP_CONST)
rop = append_elem(OP_LIST, rop,
@@
-1665,7
+1664,7
@@
void
Perl_apply_attrs_string(pTHX_ const char *stashpv, CV *cv,
const char *attrstr, STRLEN len)
{
Perl_apply_attrs_string(pTHX_ const char *stashpv, CV *cv,
const char *attrstr, STRLEN len)
{
- OP *attrs = N
ullop
;
+ OP *attrs = N
ULL
;
if (!len) {
len = strlen(attrstr);
if (!len) {
len = strlen(attrstr);
@@
-1684,7
+1683,7
@@
Perl_apply_attrs_string(pTHX_ const char *stashpv, CV *cv,
Perl_load_module(aTHX_ PERL_LOADMOD_IMPORT_OPS,
newSVpvs(ATTRSMODULE),
Perl_load_module(aTHX_ PERL_LOADMOD_IMPORT_OPS,
newSVpvs(ATTRSMODULE),
- N
ullsv
, prepend_elem(OP_LIST,
+ N
ULL
, prepend_elem(OP_LIST,
newSVOP(OP_CONST, 0, newSVpv(stashpv,0)),
prepend_elem(OP_LIST,
newSVOP(OP_CONST, 0,
newSVOP(OP_CONST, 0, newSVpv(stashpv,0)),
prepend_elem(OP_LIST,
newSVOP(OP_CONST, 0,
@@
-1773,7
+1772,7
@@
Perl_my_attrs(pTHX_ OP *o, OP *attrs)
#endif
if (attrs)
SAVEFREEOP(attrs);
#endif
if (attrs)
SAVEFREEOP(attrs);
- rops = N
ullop
;
+ rops = N
ULL
;
o = my_kid(o, attrs, &rops);
if (rops) {
if (maybe_scalar && o->op_type == OP_PADSV) {
o = my_kid(o, attrs, &rops);
if (rops) {
if (maybe_scalar && o->op_type == OP_PADSV) {
@@
-1791,7
+1790,7
@@
Perl_my_attrs(pTHX_ OP *o, OP *attrs)
OP *
Perl_my(pTHX_ OP *o)
{
OP *
Perl_my(pTHX_ OP *o)
{
- return my_attrs(o, N
ullop
);
+ return my_attrs(o, N
ULL
);
}
OP *
}
OP *
@@
-1841,14
+1840,9
@@
Perl_bind_match(pTHX_ I32 type, OP *left, OP *right)
}
if (!(right->op_flags & OPf_STACKED) && ismatchop) {
right->op_flags |= OPf_STACKED;
}
if (!(right->op_flags & OPf_STACKED) && ismatchop) {
right->op_flags |= OPf_STACKED;
- /* s/// and tr/// modify their arg.
- * m//g also indirectly modifies the arg by setting pos magic on it */
- if ( (right->op_type == OP_MATCH &&
- (cPMOPx(right)->op_pmflags & PMf_GLOBAL))
- || (right->op_type == OP_SUBST)
- || (right->op_type == OP_TRANS &&
- ! (right->op_private & OPpTRANS_IDENTICAL))
- )
+ if (right->op_type != OP_MATCH &&
+ ! (right->op_type == OP_TRANS &&
+ right->op_private & OPpTRANS_IDENTICAL))
left = mod(left, right->op_type);
if (right->op_type == OP_TRANS)
o = newBINOP(OP_NULL, OPf_STACKED, scalar(left), right);
left = mod(left, right->op_type);
if (right->op_type == OP_TRANS)
o = newBINOP(OP_NULL, OPf_STACKED, scalar(left), right);
@@
-1898,7
+1892,7
@@
Perl_scope(pTHX_ OP *o)
}
}
else
}
}
else
- o = newLISTOP(OP_SCOPE, 0, o, N
ullop
);
+ o = newLISTOP(OP_SCOPE, 0, o, N
ULL
);
}
return o;
}
}
return o;
}
@@
-2056,7
+2050,9
@@
OP *
Perl_jmaybe(pTHX_ OP *o)
{
if (o->op_type == OP_LIST) {
Perl_jmaybe(pTHX_ OP *o)
{
if (o->op_type == OP_LIST) {
- OP * const o2 = newSVREF(newGVOP(OP_GV, 0, gv_fetchpv(";", GV_ADD, SVt_PV)));
+ OP * const o2
+ = newSVREF(newGVOP(OP_GV, 0, gv_fetchpvs(";", GV_ADD|GV_NOTQUAL,
+ SVt_PV)));
o = convert(OP_JOIN, 0, prepend_elem(OP_LIST, o2, o));
}
return o;
o = convert(OP_JOIN, 0, prepend_elem(OP_LIST, o2, o));
}
return o;
@@
-2178,7
+2174,7
@@
Perl_convert(pTHX_ I32 type, I32 flags, OP *o)
{
dVAR;
if (!o || o->op_type != OP_LIST)
{
dVAR;
if (!o || o->op_type != OP_LIST)
- o = newLISTOP(OP_LIST, 0, o, N
ullop
);
+ o = newLISTOP(OP_LIST, 0, o, N
ULL
);
else
o->op_flags &= ~OPf_WANT;
else
o->op_flags &= ~OPf_WANT;
@@
-2290,7
+2286,7
@@
OP *
Perl_force_list(pTHX_ OP *o)
{
if (!o || o->op_type != OP_LIST)
Perl_force_list(pTHX_ OP *o)
{
if (!o || o->op_type != OP_LIST)
- o = newLISTOP(OP_LIST, 0, o, N
ullop
);
+ o = newLISTOP(OP_LIST, 0, o, N
ULL
);
op_null(o);
return o;
}
op_null(o);
return o;
}
@@
-2404,7
+2400,10
@@
Perl_newBINOP(pTHX_ I32 type, I32 flags, OP *first, OP *last)
return fold_constants((OP *)binop);
}
return fold_constants((OP *)binop);
}
-static int uvcompare(const void *a, const void *b) __attribute__nonnull__(1) __attribute__nonnull__(2) __attribute__pure__;
+static int uvcompare(const void *a, const void *b)
+ __attribute__nonnull__(1)
+ __attribute__nonnull__(2)
+ __attribute__pure__;
static int uvcompare(const void *a, const void *b)
{
if (*((const UV *)a) < (*(const UV *)b))
static int uvcompare(const void *a, const void *b)
{
if (*((const UV *)a) < (*(const UV *)b))
@@
-2789,7
+2788,7
@@
Perl_pmruntime(pTHX_ OP *o, OP *expr, bool isreg)
PMOP *pm;
LOGOP *rcop;
I32 repl_has_vars = 0;
PMOP *pm;
LOGOP *rcop;
I32 repl_has_vars = 0;
- OP* repl
= Nullop
;
+ OP* repl
= NULL
;
bool reglist;
if (o->op_type == OP_SUBST || o->op_type == OP_TRANS) {
bool reglist;
if (o->op_type == OP_SUBST || o->op_type == OP_TRANS) {
@@
-2799,7
+2798,7
@@
Perl_pmruntime(pTHX_ OP *o, OP *expr, bool isreg)
kid = cLISTOPx(expr)->op_first;
while (kid->op_sibling != repl)
kid = kid->op_sibling;
kid = cLISTOPx(expr)->op_first;
while (kid->op_sibling != repl)
kid = kid->op_sibling;
- kid->op_sibling = N
ullop
;
+ kid->op_sibling = N
ULL
;
cLISTOPx(expr)->op_last = kid;
}
cLISTOPx(expr)->op_last = kid;
}
@@
-2809,8
+2808,8
@@
Perl_pmruntime(pTHX_ OP *o, OP *expr, bool isreg)
/* convert single element list to element */
OP* const oe = expr;
expr = cLISTOPx(oe)->op_first->op_sibling;
/* convert single element list to element */
OP* const oe = expr;
expr = cLISTOPx(oe)->op_first->op_sibling;
- cLISTOPx(oe)->op_first->op_sibling = N
ullop
;
- cLISTOPx(oe)->op_last = N
ullop
;
+ cLISTOPx(oe)->op_first->op_sibling = N
ULL
;
+ cLISTOPx(oe)->op_last = N
ULL
;
op_free(oe);
}
op_free(oe);
}
@@
-3070,7
+3069,7
@@
Perl_utilize(pTHX_ int aver, I32 floor, OP *version, OP *idop, OP *arg)
if (idop->op_type != OP_CONST)
Perl_croak(aTHX_ "Module name must be constant");
if (idop->op_type != OP_CONST)
Perl_croak(aTHX_ "Module name must be constant");
- veop = N
ullop
;
+ veop = N
ULL
;
if (version) {
SV * const vesv = ((SVOP*)version)->op_sv;
if (version) {
SV * const vesv = ((SVOP*)version)->op_sv;
@@
-3101,7
+3100,7
@@
Perl_utilize(pTHX_ int aver, I32 floor, OP *version, OP *idop, OP *arg)
if (arg && arg->op_type == OP_STUB)
imop = arg; /* no import on explicit () */
else if (SvNIOKp(((SVOP*)idop)->op_sv)) {
if (arg && arg->op_type == OP_STUB)
imop = arg; /* no import on explicit () */
else if (SvNIOKp(((SVOP*)idop)->op_sv)) {
- imop = N
ullop;
/* use 5.0; */
+ imop = N
ULL;
/* use 5.0; */
if (!aver)
idop->op_private |= OPpCONST_NOVER;
}
if (!aver)
idop->op_private |= OPpCONST_NOVER;
}
@@
-3123,13
+3122,13
@@
Perl_utilize(pTHX_ int aver, I32 floor, OP *version, OP *idop, OP *arg)
/* Fake up the BEGIN {}, which does its thing immediately. */
newATTRSUB(floor,
newSVOP(OP_CONST, 0, newSVpvs_share("BEGIN")),
/* Fake up the BEGIN {}, which does its thing immediately. */
newATTRSUB(floor,
newSVOP(OP_CONST, 0, newSVpvs_share("BEGIN")),
- N
ullop
,
- N
ullop
,
+ N
ULL
,
+ N
ULL
,
append_elem(OP_LINESEQ,
append_elem(OP_LINESEQ,
append_elem(OP_LINESEQ,
append_elem(OP_LINESEQ,
- newSTATEOP(0, N
ullch
, newUNOP(OP_REQUIRE, 0, idop)),
- newSTATEOP(0, N
ullch
, veop)),
- newSTATEOP(0, N
ullch
, imop) ));
+ newSTATEOP(0, N
ULL
, newUNOP(OP_REQUIRE, 0, idop)),
+ newSTATEOP(0, N
ULL
, veop)),
+ newSTATEOP(0, N
ULL
, imop) ));
/* The "did you use incorrect case?" warning used to be here.
* The problem is that on case-insensitive filesystems one
/* The "did you use incorrect case?" warning used to be here.
* The problem is that on case-insensitive filesystems one
@@
-3203,7
+3202,7
@@
Perl_vload_module(pTHX_ U32 flags, SV *name, SV *ver, va_list *args)
veop = newSVOP(OP_CONST, 0, ver);
}
else
veop = newSVOP(OP_CONST, 0, ver);
}
else
- veop = N
ullop
;
+ veop = N
ULL
;
if (flags & PERL_LOADMOD_NOIMPORT) {
imop = sawparens(newNULLLIST());
}
if (flags & PERL_LOADMOD_NOIMPORT) {
imop = sawparens(newNULLLIST());
}
@@
-3212,7
+3211,7
@@
Perl_vload_module(pTHX_ U32 flags, SV *name, SV *ver, va_list *args)
}
else {
SV *sv;
}
else {
SV *sv;
- imop = N
ullop
;
+ imop = N
ULL
;
sv = va_arg(*args, SV*);
while (sv) {
imop = append_elem(OP_LIST, imop, newSVOP(OP_CONST, 0, sv));
sv = va_arg(*args, SV*);
while (sv) {
imop = append_elem(OP_LIST, imop, newSVOP(OP_CONST, 0, sv));
@@
-3237,13
+3236,13
@@
Perl_dofile(pTHX_ OP *term, I32 force_builtin)
{
dVAR;
OP *doop;
{
dVAR;
OP *doop;
- GV *gv = N
ullgv
;
+ GV *gv = N
ULL
;
if (!force_builtin) {
if (!force_builtin) {
- gv = gv_fetchpv
("do", 0
, SVt_PVCV);
+ gv = gv_fetchpv
s("do", GV_NOTQUAL
, SVt_PVCV);
if (!(gv && GvCVu(gv) && GvIMPORTED_CV(gv))) {
GV * const * const gvp = (GV**)hv_fetchs(PL_globalstash, "do", FALSE);
if (!(gv && GvCVu(gv) && GvIMPORTED_CV(gv))) {
GV * const * const gvp = (GV**)hv_fetchs(PL_globalstash, "do", FALSE);
- gv = gvp ? *gvp : N
ullgv
;
+ gv = gvp ? *gvp : N
ULL
;
}
}
}
}
@@
-3426,12
+3425,12
@@
Perl_newASSIGNOP(pTHX_ I32 flags, OP *left, I32 optype, OP *right)
cPADOPx(tmpop)->op_padix = 0; /* steal it */
#else
pm->op_pmreplroot = (OP*)cSVOPx(tmpop)->op_sv;
cPADOPx(tmpop)->op_padix = 0; /* steal it */
#else
pm->op_pmreplroot = (OP*)cSVOPx(tmpop)->op_sv;
- cSVOPx(tmpop)->op_sv = N
ullsv;
/* steal it */
+ cSVOPx(tmpop)->op_sv = N
ULL;
/* steal it */
#endif
pm->op_pmflags |= PMf_ONCE;
tmpop = cUNOPo->op_first; /* to list (nulled) */
tmpop = ((UNOP*)tmpop)->op_first; /* to pushmark */
#endif
pm->op_pmflags |= PMf_ONCE;
tmpop = cUNOPo->op_first; /* to list (nulled) */
tmpop = ((UNOP*)tmpop)->op_first; /* to pushmark */
- tmpop->op_sibling = N
ullop;
/* don't free split */
+ tmpop->op_sibling = N
ULL;
/* don't free split */
right->op_next = tmpop->op_next; /* fix starting loc */
op_free(o); /* blow off assign */
right->op_flags &= ~OPf_WANT;
right->op_next = tmpop->op_next; /* fix starting loc */
op_free(o); /* blow off assign */
right->op_flags &= ~OPf_WANT;
@@
-3567,7
+3566,7
@@
S_new_logop(pTHX_ I32 type, I32 flags, OP** firstp, OP** otherp)
first = *firstp = cUNOPo->op_first;
if (o->op_next)
first->op_next = o->op_next;
first = *firstp = cUNOPo->op_first;
if (o->op_next)
first->op_next = o->op_next;
- cUNOPo->op_first = N
ullop
;
+ cUNOPo->op_first = N
ULL
;
op_free(o);
}
}
op_free(o);
}
}
@@
-3580,7
+3579,7
@@
S_new_logop(pTHX_ I32 type, I32 flags, OP** firstp, OP** otherp)
(type == OP_OR && !SvTRUE(((SVOP*)first)->op_sv)) ||
(type == OP_DOR && !SvOK(((SVOP*)first)->op_sv))) {
op_free(first);
(type == OP_OR && !SvTRUE(((SVOP*)first)->op_sv)) ||
(type == OP_DOR && !SvOK(((SVOP*)first)->op_sv))) {
op_free(first);
- *firstp = N
ullop
;
+ *firstp = N
ULL
;
if (other->op_type == OP_CONST)
other->op_private |= OPpCONST_SHORTCIRCUIT;
return other;
if (other->op_type == OP_CONST)
other->op_private |= OPpCONST_SHORTCIRCUIT;
return other;
@@
-3604,7
+3603,7
@@
S_new_logop(pTHX_ I32 type, I32 flags, OP** firstp, OP** otherp)
}
op_free(other);
}
op_free(other);
- *otherp = N
ullop
;
+ *otherp = N
ULL
;
if (first->op_type == OP_CONST)
first->op_private |= OPpCONST_SHORTCIRCUIT;
return first;
if (first->op_type == OP_CONST)
first->op_private |= OPpCONST_SHORTCIRCUIT;
return first;
@@
-3909,7
+3908,7
@@
whileline, OP *expr, OP *block, OP *cont, I32 has_my)
if (o == expr && o->op_type == OP_CONST && !SvTRUE(cSVOPo->op_sv)) {
op_free(expr); /* oops, it's a while (0) */
op_free((OP*)loop);
if (o == expr && o->op_type == OP_CONST && !SvTRUE(cSVOPo->op_sv)) {
op_free(expr); /* oops, it's a while (0) */
op_free((OP*)loop);
- return N
ullop;
/* listop already freed by new_logop */
+ return N
ULL;
/* listop already freed by new_logop */
}
if (listop)
((LISTOP*)listop)->op_last->op_next =
}
if (listop)
((LISTOP*)listop)->op_last->op_next =
@@
-3965,14
+3964,14
@@
Perl_newFOROP(pTHX_ I32 flags, char *label, line_t forline, OP *sv, OP *expr, OP
padoff = sv->op_targ;
sv->op_targ = 0;
op_free(sv);
padoff = sv->op_targ;
sv->op_targ = 0;
op_free(sv);
- sv = N
ullop
;
+ sv = N
ULL
;
}
else if (sv->op_type == OP_THREADSV) { /* per-thread variable */
padoff = sv->op_targ;
sv->op_targ = 0;
iterflags |= OPf_SPECIAL;
op_free(sv);
}
else if (sv->op_type == OP_THREADSV) { /* per-thread variable */
padoff = sv->op_targ;
sv->op_targ = 0;
iterflags |= OPf_SPECIAL;
op_free(sv);
- sv = N
ullop
;
+ sv = N
ULL
;
}
else
Perl_croak(aTHX_ "Can't use %s for loop variable", PL_op_desc[sv->op_type]);
}
else
Perl_croak(aTHX_ "Can't use %s for loop variable", PL_op_desc[sv->op_type]);
@@
-4008,7
+4007,7
@@
Perl_newFOROP(pTHX_ I32 flags, char *label, line_t forline, OP *sv, OP *expr, OP
LISTOP* listop;
range->op_flags &= ~OPf_KIDS;
LISTOP* listop;
range->op_flags &= ~OPf_KIDS;
- range->op_first = N
ullop
;
+ range->op_first = N
ULL
;
listop = (LISTOP*)newLISTOP(OP_LIST, 0, left, right);
listop->op_first->op_next = range->op_next;
listop = (LISTOP*)newLISTOP(OP_LIST, 0, left, right);
listop->op_first->op_next = range->op_next;
@@
-4281,12
+4280,12
@@
Perl_cv_undef(pTHX_ CV *cv)
PAD_SAVE_SETNULLPAD();
op_free(CvROOT(cv));
PAD_SAVE_SETNULLPAD();
op_free(CvROOT(cv));
- CvROOT(cv) = N
ullop
;
- CvSTART(cv) = N
ullop
;
+ CvROOT(cv) = N
ULL
;
+ CvSTART(cv) = N
ULL
;
LEAVE;
}
SvPOK_off((SV*)cv); /* forget prototype */
LEAVE;
}
SvPOK_off((SV*)cv); /* forget prototype */
- CvGV(cv) = N
ullgv
;
+ CvGV(cv) = N
ULL
;
pad_undef(cv);
pad_undef(cv);
@@
-4294,7
+4293,7
@@
Perl_cv_undef(pTHX_ CV *cv)
if (!SvREFCNT(cv) && CvOUTSIDE(cv)) {
if (!CvWEAKOUTSIDE(cv))
SvREFCNT_dec(CvOUTSIDE(cv));
if (!SvREFCNT(cv) && CvOUTSIDE(cv)) {
if (!CvWEAKOUTSIDE(cv))
SvREFCNT_dec(CvOUTSIDE(cv));
- CvOUTSIDE(cv) = N
ullcv
;
+ CvOUTSIDE(cv) = N
ULL
;
}
if (CvCONST(cv)) {
SvREFCNT_dec((SV*)CvXSUBANY(cv).any_ptr);
}
if (CvCONST(cv)) {
SvREFCNT_dec((SV*)CvXSUBANY(cv).any_ptr);
@@
-4312,10
+4311,10
@@
Perl_cv_ckproto(pTHX_ const CV *cv, const GV *gv, const char *p)
{
if (((!p != !SvPOK(cv)) || (p && strNE(p, SvPVX_const(cv)))) && ckWARN_d(WARN_PROTOTYPE)) {
SV* const msg = sv_newmortal();
{
if (((!p != !SvPOK(cv)) || (p && strNE(p, SvPVX_const(cv)))) && ckWARN_d(WARN_PROTOTYPE)) {
SV* const msg = sv_newmortal();
- SV* name = N
ullsv
;
+ SV* name = N
ULL
;
if (gv)
if (gv)
- gv_efullname3(name = sv_newmortal(), gv, N
ullch
);
+ gv_efullname3(name = sv_newmortal(), gv, N
ULL
);
sv_setpv(msg, "Prototype mismatch:");
if (name)
Perl_sv_catpvf(aTHX_ msg, " sub %"SVf, name);
sv_setpv(msg, "Prototype mismatch:");
if (name)
Perl_sv_catpvf(aTHX_ msg, " sub %"SVf, name);
@@
-4382,10
+4381,10
@@
SV *
Perl_op_const_sv(pTHX_ const OP *o, CV *cv)
{
dVAR;
Perl_op_const_sv(pTHX_ const OP *o, CV *cv)
{
dVAR;
- SV *sv = N
ullsv
;
+ SV *sv = N
ULL
;
if (!o)
if (!o)
- return N
ullsv
;
+ return N
ULL
;
if (o->op_type == OP_LINESEQ && cLISTOPo->op_first)
o = cLISTOPo->op_first->op_sibling;
if (o->op_type == OP_LINESEQ && cLISTOPo->op_first)
o = cLISTOPo->op_first->op_sibling;
@@
-4404,13
+4403,13
@@
Perl_op_const_sv(pTHX_ const OP *o, CV *cv)
if (type == OP_LEAVESUB || type == OP_RETURN)
break;
if (sv)
if (type == OP_LEAVESUB || type == OP_RETURN)
break;
if (sv)
- return N
ullsv
;
+ return N
ULL
;
if (type == OP_CONST && cSVOPo->op_sv)
sv = cSVOPo->op_sv;
else if (cv && type == OP_CONST) {
sv = PAD_BASE_SV(CvPADLIST(cv), o->op_targ);
if (!sv)
if (type == OP_CONST && cSVOPo->op_sv)
sv = cSVOPo->op_sv;
else if (cv && type == OP_CONST) {
sv = PAD_BASE_SV(CvPADLIST(cv), o->op_targ);
if (!sv)
- return N
ullsv
;
+ return N
ULL
;
}
else if (cv && type == OP_PADSV) {
if (CvCONST(cv)) { /* newly cloned anon */
}
else if (cv && type == OP_PADSV) {
if (CvCONST(cv)) { /* newly cloned anon */
@@
-4418,7
+4417,7
@@
Perl_op_const_sv(pTHX_ const OP *o, CV *cv)
/* the candidate should have 1 ref from this pad and 1 ref
* from the parent */
if (!sv || SvREFCNT(sv) != 2)
/* the candidate should have 1 ref from this pad and 1 ref
* from the parent */
if (!sv || SvREFCNT(sv) != 2)
- return N
ullsv
;
+ return N
ULL
;
sv = newSVsv(sv);
SvREADONLY_on(sv);
return sv;
sv = newSVsv(sv);
SvREADONLY_on(sv);
return sv;
@@
-4429,7
+4428,7
@@
Perl_op_const_sv(pTHX_ const OP *o, CV *cv)
}
}
else {
}
}
else {
- return N
ullsv
;
+ return N
ULL
;
}
}
return sv;
}
}
return sv;
@@
-4454,7
+4453,7
@@
Perl_newMYSUB(pTHX_ I32 floor, OP *o, OP *proto, OP *attrs, OP *block)
CV *
Perl_newSUB(pTHX_ I32 floor, OP *o, OP *proto, OP *block)
{
CV *
Perl_newSUB(pTHX_ I32 floor, OP *o, OP *proto, OP *block)
{
- return Perl_newATTRSUB(aTHX_ floor, o, proto, N
ullop
, block);
+ return Perl_newATTRSUB(aTHX_ floor, o, proto, N
ULL
, block);
}
CV *
}
CV *
@@
-4475,14
+4474,14
@@
Perl_newATTRSUB(pTHX_ I32 floor, OP *o, OP *proto, OP *attrs, OP *block)
const I32 gv_fetch_flags
= (block || attrs || (CvFLAGS(PL_compcv) & CVf_BUILTIN_ATTRS))
? GV_ADDMULTI : GV_ADDMULTI | GV_NOINIT;
const I32 gv_fetch_flags
= (block || attrs || (CvFLAGS(PL_compcv) & CVf_BUILTIN_ATTRS))
? GV_ADDMULTI : GV_ADDMULTI | GV_NOINIT;
- const char * const name = o ? SvPVx_nolen_const(cSVOPo->op_sv) : N
ullch
;
+ const char * const name = o ? SvPVx_nolen_const(cSVOPo->op_sv) : N
ULL
;
if (proto) {
assert(proto->op_type == OP_CONST);
ps = SvPVx_const(((SVOP*)proto)->op_sv, ps_len);
}
else
if (proto) {
assert(proto->op_type == OP_CONST);
ps = SvPVx_const(((SVOP*)proto)->op_sv, ps_len);
}
else
- ps = N
ullch
;
+ ps = N
ULL
;
if (!name && PERLDB_NAMEANON && CopLINE(PL_curcop)) {
SV * const sv = sv_newmortal();
if (!name && PERLDB_NAMEANON && CopLINE(PL_curcop)) {
SV * const sv = sv_newmortal();
@@
-4492,7
+4491,7
@@
Perl_newATTRSUB(pTHX_ I32 floor, OP *o, OP *proto, OP *attrs, OP *block)
aname = SvPVX_const(sv);
}
else
aname = SvPVX_const(sv);
}
else
- aname = N
ullch
;
+ aname = N
ULL
;
gv = name ? gv_fetchsv(cSVOPo->op_sv, gv_fetch_flags, SVt_PVCV)
: gv_fetchpv(aname ? aname
gv = name ? gv_fetchsv(cSVOPo->op_sv, gv_fetch_flags, SVt_PVCV)
: gv_fetchpv(aname ? aname
@@
-4526,7
+4525,7
@@
Perl_newATTRSUB(pTHX_ I32 floor, OP *o, OP *proto, OP *attrs, OP *block)
goto done;
}
goto done;
}
- cv = (!name || GvCVGEN(gv)) ? N
ullcv
: GvCV(gv);
+ cv = (!name || GvCVGEN(gv)) ? N
ULL
: GvCV(gv);
#ifdef GV_UNIQUE_CHECK
if (cv && GvUNIQUE(gv) && SvREADONLY(cv)) {
#ifdef GV_UNIQUE_CHECK
if (cv && GvUNIQUE(gv) && SvREADONLY(cv)) {
@@
-4535,9
+4534,9
@@
Perl_newATTRSUB(pTHX_ I32 floor, OP *o, OP *proto, OP *attrs, OP *block)
#endif
if (!block || !ps || *ps || attrs || (CvFLAGS(PL_compcv) & CVf_BUILTIN_ATTRS))
#endif
if (!block || !ps || *ps || attrs || (CvFLAGS(PL_compcv) & CVf_BUILTIN_ATTRS))
- const_sv = N
ullsv
;
+ const_sv = N
ULL
;
else
else
- const_sv = op_const_sv(block, N
ullcv
);
+ const_sv = op_const_sv(block, N
ULL
);
if (cv) {
const bool exists = CvROOT(cv) || CvXSUB(cv);
if (cv) {
const bool exists = CvROOT(cv) || CvXSUB(cv);
@@
-4579,7
+4578,7
@@
Perl_newATTRSUB(pTHX_ I32 floor, OP *o, OP *proto, OP *attrs, OP *block)
CopLINE_set(PL_curcop, oldline);
}
SvREFCNT_dec(cv);
CopLINE_set(PL_curcop, oldline);
}
SvREFCNT_dec(cv);
- cv = N
ullcv
;
+ cv = N
ULL
;
}
}
}
}
}
}
@@
-4593,7
+4592,7
@@
Perl_newATTRSUB(pTHX_ I32 floor, OP *o, OP *proto, OP *attrs, OP *block)
CvCONST_on(cv);
}
else {
CvCONST_on(cv);
}
else {
- GvCV(gv) = N
ullcv
;
+ GvCV(gv) = N
ULL
;
cv = newCONSTSUB(NULL, name, const_sv);
}
op_free(block);
cv = newCONSTSUB(NULL, name, const_sv);
}
op_free(block);
@@
-4671,7
+4670,7
@@
Perl_newATTRSUB(pTHX_ I32 floor, OP *o, OP *proto, OP *attrs, OP *block)
if (PL_error_count) {
op_free(block);
if (PL_error_count) {
op_free(block);
- block = N
ullop
;
+ block = N
ULL
;
if (name) {
const char *s = strrchr(name, ':');
s = s ? s+1 : name;
if (name) {
const char *s = strrchr(name, ':');
s = s ? s+1 : name;
@@
-4699,7
+4698,7
@@
Perl_newATTRSUB(pTHX_ I32 floor, OP *o, OP *proto, OP *attrs, OP *block)
/* This makes sub {}; work as expected. */
if (block->op_type == OP_STUB) {
op_free(block);
/* This makes sub {}; work as expected. */
if (block->op_type == OP_STUB) {
op_free(block);
- block = newSTATEOP(0, N
ullch
, 0);
+ block = newSTATEOP(0, N
ULL
, 0);
}
CvROOT(cv) = newUNOP(OP_LEAVESUB, 0, scalarseq(block));
}
}
CvROOT(cv) = newUNOP(OP_LEAVESUB, 0, scalarseq(block));
}
@@
-4726,13
+4725,14
@@
Perl_newATTRSUB(pTHX_ I32 floor, OP *o, OP *proto, OP *attrs, OP *block)
if (PERLDB_SUBLINE && PL_curstash != PL_debstash) {
SV * const sv = newSV(0);
SV * const tmpstr = sv_newmortal();
if (PERLDB_SUBLINE && PL_curstash != PL_debstash) {
SV * const sv = newSV(0);
SV * const tmpstr = sv_newmortal();
- GV * const db_postponed = gv_fetchpv("DB::postponed", GV_ADDMULTI, SVt_PVHV);
+ GV * const db_postponed = gv_fetchpvs("DB::postponed",
+ GV_ADDMULTI, SVt_PVHV);
HV *hv;
Perl_sv_setpvf(aTHX_ sv, "%s:%ld-%ld",
CopFILE(PL_curcop),
(long)PL_subline, (long)CopLINE(PL_curcop));
HV *hv;
Perl_sv_setpvf(aTHX_ sv, "%s:%ld-%ld",
CopFILE(PL_curcop),
(long)PL_subline, (long)CopLINE(PL_curcop));
- gv_efullname3(tmpstr, gv, N
ullch
);
+ gv_efullname3(tmpstr, gv, N
ULL
);
hv_store(GvHV(PL_DBsub), SvPVX_const(tmpstr), SvCUR(tmpstr), sv, 0);
hv = GvHVn(db_postponed);
if (HvFILL(hv) > 0 && hv_exists(hv, SvPVX_const(tmpstr), SvCUR(tmpstr))) {
hv_store(GvHV(PL_DBsub), SvPVX_const(tmpstr), SvCUR(tmpstr), sv, 0);
hv = GvHVn(db_postponed);
if (HvFILL(hv) > 0 && hv_exists(hv, SvPVX_const(tmpstr), SvCUR(tmpstr))) {
@@
-4872,11
+4872,11
@@
Perl_newXS(pTHX_ const char *name, XSUBADDR_t subaddr, const char *filename)
if (!subaddr)
Perl_croak(aTHX_ "panic: no address for '%s' in '%s'", name, filename);
if (!subaddr)
Perl_croak(aTHX_ "panic: no address for '%s' in '%s'", name, filename);
- if ((cv = (name ? GvCV(gv) : N
ullcv
))) {
+ if ((cv = (name ? GvCV(gv) : N
ULL
))) {
if (GvCVGEN(gv)) {
/* just a cached method */
SvREFCNT_dec(cv);
if (GvCVGEN(gv)) {
/* just a cached method */
SvREFCNT_dec(cv);
- cv = N
ullcv
;
+ cv = N
ULL
;
}
else if (CvROOT(cv) || CvXSUB(cv) || GvASSUMECV(gv)) {
/* already defined (or promised) */
}
else if (CvROOT(cv) || CvXSUB(cv) || GvASSUMECV(gv)) {
/* already defined (or promised) */
@@
-4886,8
+4886,8
@@
Perl_newXS(pTHX_ const char *name, XSUBADDR_t subaddr, const char *filename)
if (gvcv) {
HV * const stash = GvSTASH(gvcv);
if (stash) {
if (gvcv) {
HV * const stash = GvSTASH(gvcv);
if (stash) {
- const char *name = HvNAME_get(stash);
- if ( strEQ(name,"autouse") ) {
+ const char *
redefined_
name = HvNAME_get(stash);
+ if ( strEQ(
redefined_
name,"autouse") ) {
const line_t oldline = CopLINE(PL_curcop);
if (PL_copline != NOLINE)
CopLINE_set(PL_curcop, PL_copline);
const line_t oldline = CopLINE(PL_curcop);
if (PL_copline != NOLINE)
CopLINE_set(PL_curcop, PL_copline);
@@
-4901,7
+4901,7
@@
Perl_newXS(pTHX_ const char *name, XSUBADDR_t subaddr, const char *filename)
}
}
SvREFCNT_dec(cv);
}
}
SvREFCNT_dec(cv);
- cv = N
ullcv
;
+ cv = N
ULL
;
}
}
}
}
@@
-4978,7
+4978,7
@@
Perl_newFORM(pTHX_ I32 floor, OP *o, OP *block)
GV * const gv = o
? gv_fetchsv(cSVOPo->op_sv, GV_ADD, SVt_PVFM)
GV * const gv = o
? gv_fetchsv(cSVOPo->op_sv, GV_ADD, SVt_PVFM)
- : gv_fetchpv
("STDOUT", GV_ADD
, SVt_PVFM);
+ : gv_fetchpv
s("STDOUT", GV_ADD|GV_NOTQUAL
, SVt_PVFM);
#ifdef GV_UNIQUE_CHECK
if (GvUNIQUE(gv)) {
#ifdef GV_UNIQUE_CHECK
if (GvUNIQUE(gv)) {
@@
-5033,7
+5033,7
@@
Perl_newANONHASH(pTHX_ OP *o)
OP *
Perl_newANONSUB(pTHX_ I32 floor, OP *proto, OP *block)
{
OP *
Perl_newANONSUB(pTHX_ I32 floor, OP *proto, OP *block)
{
- return newANONATTRSUB(floor, proto, N
ullop
, block);
+ return newANONATTRSUB(floor, proto, N
ULL
, block);
}
OP *
}
OP *
@@
-5165,7
+5165,7
@@
OP *
Perl_ck_anoncode(pTHX_ OP *o)
{
cSVOPo->op_targ = pad_add_anon(cSVOPo->op_sv, o->op_type);
Perl_ck_anoncode(pTHX_ OP *o)
{
cSVOPo->op_targ = pad_add_anon(cSVOPo->op_sv, o->op_type);
- cSVOPo->op_sv = N
ullsv
;
+ cSVOPo->op_sv = N
ULL
;
return o;
}
return o;
}
@@
-5416,7
+5416,7
@@
Perl_ck_rvconst(pTHX_ register OP *o)
if (SvROK(kidsv) && SvREADONLY(kidsv)) {
SV * const rsv = SvRV(kidsv);
const int svtype = SvTYPE(rsv);
if (SvROK(kidsv) && SvREADONLY(kidsv)) {
SV * const rsv = SvRV(kidsv);
const int svtype = SvTYPE(rsv);
- const char *badtype = N
ullch
;
+ const char *badtype = N
ULL
;
switch (o->op_type) {
case OP_RV2SV:
switch (o->op_type) {
case OP_RV2SV:
@@
-5452,7
+5452,7
@@
Perl_ck_rvconst(pTHX_ register OP *o)
o->op_private &= ~HINT_STRICT_REFS;
}
if ((o->op_private & HINT_STRICT_REFS) && (kid->op_private & OPpCONST_BARE)) {
o->op_private &= ~HINT_STRICT_REFS;
}
if ((o->op_private & HINT_STRICT_REFS) && (kid->op_private & OPpCONST_BARE)) {
-
const char *badthing = Nullch
;
+
const char *badthing
;
switch (o->op_type) {
case OP_RV2SV:
badthing = "a SCALAR";
switch (o->op_type) {
case OP_RV2SV:
badthing = "a SCALAR";
@@
-5463,6
+5463,9
@@
Perl_ck_rvconst(pTHX_ register OP *o)
case OP_RV2HV:
badthing = "a HASH";
break;
case OP_RV2HV:
badthing = "a HASH";
break;
+ default:
+ badthing = NULL;
+ break;
}
if (badthing)
Perl_croak(aTHX_
}
if (badthing)
Perl_croak(aTHX_
@@
-5677,7
+5680,7
@@
Perl_ck_fun(pTHX_ OP *o)
/* is this op a FH constructor? */
if (is_handle_constructor(o,numargs)) {
/* is this op a FH constructor? */
if (is_handle_constructor(o,numargs)) {
- const char *name = N
ullch
;
+ const char *name = N
ULL
;
STRLEN len = 0;
flags = 0;
STRLEN len = 0;
flags = 0;
@@
-5708,7
+5711,7
@@
Perl_ck_fun(pTHX_ OP *o)
OP *op = ((BINOP*)kid)->op_first;
name = NULL;
if (op) {
OP *op = ((BINOP*)kid)->op_first;
name = NULL;
if (op) {
- SV *tmpstr = N
ullsv
;
+ SV *tmpstr = N
ULL
;
const char * const a =
kid->op_type == OP_AELEM ?
"[]" : "{}";
const char * const a =
kid->op_type == OP_AELEM ?
"[]" : "{}";
@@
-5805,10
+5808,10
@@
Perl_ck_glob(pTHX_ OP *o)
if ((o->op_flags & OPf_KIDS) && !cLISTOPo->op_first->op_sibling)
append_elem(OP_GLOB, o, newDEFSVOP());
if ((o->op_flags & OPf_KIDS) && !cLISTOPo->op_first->op_sibling)
append_elem(OP_GLOB, o, newDEFSVOP());
- if (!((gv = gv_fetchpv
("glob", 0
, SVt_PVCV))
+ if (!((gv = gv_fetchpv
s("glob", GV_NOTQUAL
, SVt_PVCV))
&& GvCVu(gv) && GvIMPORTED_CV(gv)))
{
&& GvCVu(gv) && GvIMPORTED_CV(gv)))
{
- gv = gv_fetchpv("CORE::GLOBAL::glob", 0, SVt_PVCV);
+ gv = gv_fetchpv
s
("CORE::GLOBAL::glob", 0, SVt_PVCV);
}
#if !defined(PERL_EXTERNAL_GLOB)
}
#if !defined(PERL_EXTERNAL_GLOB)
@@
-5817,9
+5820,9
@@
Perl_ck_glob(pTHX_ OP *o)
GV *glob_gv;
ENTER;
Perl_load_module(aTHX_ PERL_LOADMOD_NOIMPORT,
GV *glob_gv;
ENTER;
Perl_load_module(aTHX_ PERL_LOADMOD_NOIMPORT,
- newSVpvs("File::Glob"), N
ullsv, Nullsv, Nullsv
);
- gv = gv_fetchpv("CORE::GLOBAL::glob", 0, SVt_PVCV);
- glob_gv = gv_fetchpv("File::Glob::csh_glob", 0, SVt_PVCV);
+ newSVpvs("File::Glob"), N
ULL, NULL, NULL
);
+ gv = gv_fetchpv
s
("CORE::GLOBAL::glob", 0, SVt_PVCV);
+ glob_gv = gv_fetchpv
s
("File::Glob::csh_glob", 0, SVt_PVCV);
GvCV(gv) = GvCV(glob_gv);
(void)SvREFCNT_inc((SV*)GvCV(gv));
GvIMPORTED_CV_on(gv);
GvCV(gv) = GvCV(glob_gv);
(void)SvREFCNT_inc((SV*)GvCV(gv));
GvIMPORTED_CV_on(gv);
@@
-6033,7
+6036,7
@@
Perl_ck_smartmatch(pTHX_ OP *o)
OP *second = first->op_sibling;
/* Implicitly take a reference to an array or hash */
OP *second = first->op_sibling;
/* Implicitly take a reference to an array or hash */
- first->op_sibling = N
ullop
;
+ first->op_sibling = N
ULL
;
first = cBINOPo->op_first = ref_array_or_hash(first);
second = first->op_sibling = ref_array_or_hash(second);
first = cBINOPo->op_first = ref_array_or_hash(first);
second = first->op_sibling = ref_array_or_hash(second);
@@
-6111,7
+6114,7
@@
Perl_ck_method(pTHX_ OP *o)
sv = newSVpvn_share(method, SvCUR(sv), 0);
}
else {
sv = newSVpvn_share(method, SvCUR(sv), 0);
}
else {
- kSVOP->op_sv = N
ullsv
;
+ kSVOP->op_sv = N
ULL
;
}
cmop = newSVOP(OP_METHOD_NAMED, 0, sv);
op_free(o);
}
cmop = newSVOP(OP_METHOD_NAMED, 0, sv);
op_free(o);
@@
-6192,7
+6195,7
@@
OP *
Perl_ck_require(pTHX_ OP *o)
{
dVAR;
Perl_ck_require(pTHX_ OP *o)
{
dVAR;
- GV* gv = N
ullgv
;
+ GV* gv = N
ULL
;
if (o->op_flags & OPf_KIDS) { /* Shall we supply missing .pm? */
SVOP * const kid = (SVOP*)cUNOPo->op_first;
if (o->op_flags & OPf_KIDS) { /* Shall we supply missing .pm? */
SVOP * const kid = (SVOP*)cUNOPo->op_first;
@@
-6227,10
+6230,10
@@
Perl_ck_require(pTHX_ OP *o)
if (!(o->op_flags & OPf_SPECIAL)) { /* Wasn't written as CORE::require */
/* handle override, if any */
if (!(o->op_flags & OPf_SPECIAL)) { /* Wasn't written as CORE::require */
/* handle override, if any */
- gv = gv_fetchpv
("require", 0
, SVt_PVCV);
+ gv = gv_fetchpv
s("require", GV_NOTQUAL
, SVt_PVCV);
if (!(gv && GvCVu(gv) && GvIMPORTED_CV(gv))) {
GV * const * const gvp = (GV**)hv_fetchs(PL_globalstash, "require", FALSE);
if (!(gv && GvCVu(gv) && GvIMPORTED_CV(gv))) {
GV * const * const gvp = (GV**)hv_fetchs(PL_globalstash, "require", FALSE);
- gv = gvp ? *gvp : N
ullgv
;
+ gv = gvp ? *gvp : N
ULL
;
}
}
}
}
@@
-6388,8
+6391,8
@@
S_simplify_sort(pTHX_ OP *o)
const char *gvname;
if (!(o->op_flags & OPf_STACKED))
return;
const char *gvname;
if (!(o->op_flags & OPf_STACKED))
return;
- GvMULTI_on(gv_fetchpv
("a", GV_ADD
, SVt_PV));
- GvMULTI_on(gv_fetchpv
("b", GV_ADD
, SVt_PV));
+ GvMULTI_on(gv_fetchpv
s("a", GV_ADD|GV_NOTQUAL
, SVt_PV));
+ GvMULTI_on(gv_fetchpv
s("b", GV_ADD|GV_NOTQUAL
, SVt_PV));
kid = kUNOP->op_first; /* get past null */
if (kid->op_type != OP_SCOPE)
return;
kid = kUNOP->op_first; /* get past null */
if (kid->op_type != OP_SCOPE)
return;
@@
-6573,9
+6576,9
@@
Perl_ck_subr(pTHX_ OP *o)
if (o2->op_type == OP_CONST)
o2->op_private &= ~OPpCONST_STRICT;
else if (o2->op_type == OP_LIST) {
if (o2->op_type == OP_CONST)
o2->op_private &= ~OPpCONST_STRICT;
else if (o2->op_type == OP_LIST) {
- OP * const
o
= ((UNOP*)o2)->op_first->op_sibling;
- if (
o && o
->op_type == OP_CONST)
-
o
->op_private &= ~OPpCONST_STRICT;
+ OP * const
sib
= ((UNOP*)o2)->op_first->op_sibling;
+ if (
sib && sib
->op_type == OP_CONST)
+
sib
->op_private &= ~OPpCONST_STRICT;
}
}
o->op_private |= (PL_hints & HINT_STRICT_REFS);
}
}
o->op_private |= (PL_hints & HINT_STRICT_REFS);
@@
-6763,6
+6766,22
@@
Perl_ck_svconst(pTHX_ OP *o)
}
OP *
}
OP *
+Perl_ck_chdir(pTHX_ OP *o)
+{
+ if (o->op_flags & OPf_KIDS) {
+ SVOP *kid = (SVOP*)cUNOPo->op_first;
+
+ if (kid && kid->op_type == OP_CONST &&
+ (kid->op_private & OPpCONST_BARE))
+ {
+ o->op_flags |= OPf_SPECIAL;
+ kid->op_private &= ~OPpCONST_STRICT;
+ }
+ }
+ return ck_fun(o);
+}
+
+OP *
Perl_ck_trunc(pTHX_ OP *o)
{
if (o->op_flags & OPf_KIDS) {
Perl_ck_trunc(pTHX_ OP *o)
{
if (o->op_flags & OPf_KIDS) {
@@
-6871,7
+6890,7
@@
Perl_peep(pTHX_ register OP *o)
/* XXX I don't know how this isn't readonly already. */
SvREADONLY_on(PAD_SVl(ix));
}
/* XXX I don't know how this isn't readonly already. */
SvREADONLY_on(PAD_SVl(ix));
}
- cSVOPo->op_sv = N
ullsv
;
+ cSVOPo->op_sv = N
ULL
;
o->op_targ = ix;
}
#endif
o->op_targ = ix;
}
#endif
@@
-6982,7
+7001,7
@@
Perl_peep(pTHX_ register OP *o)
if (SvTYPE(gv) == SVt_PVGV && GvCV(gv) && SvPVX_const(GvCV(gv))) {
/* XXX could check prototype here instead of just carping */
SV * const sv = sv_newmortal();
if (SvTYPE(gv) == SVt_PVGV && GvCV(gv) && SvPVX_const(GvCV(gv))) {
/* XXX could check prototype here instead of just carping */
SV * const sv = sv_newmortal();
- gv_efullname3(sv, gv, N
ullch
);
+ gv_efullname3(sv, gv, N
ULL
);
Perl_warner(aTHX_ packWARN(WARN_PROTOTYPE),
"%"SVf"() called too early to check prototype",
sv);
Perl_warner(aTHX_ packWARN(WARN_PROTOTYPE),
"%"SVf"() called too early to check prototype",
sv);