* The main guts of traverse_isa was actually copied from gv_fetchmeth
*/
-STATIC SV *
+STATIC bool
S_isa_lookup(pTHX_ HV *stash, const char *name, HV* name_stash,
int len, int level)
{
/* A stash/class can go by many names (ie. User == main::User), so
we compare the stash itself just in case */
if (name_stash && (stash == name_stash))
- return &PL_sv_yes;
+ return TRUE;
hvname = HvNAME_get(stash);
if (strEQ(hvname, name))
- return &PL_sv_yes;
+ return TRUE;
if (strEQ(name, "UNIVERSAL"))
- return &PL_sv_yes;
+ return TRUE;
if (level > 100)
Perl_croak(aTHX_ "Recursive inheritance detected in package '%s'",
hvname);
- gvp = (GV**)hv_fetch(stash, "::ISA::CACHE::", 14, FALSE);
+ gvp = (GV**)hv_fetchs(stash, "::ISA::CACHE::", FALSE);
if (gvp && (gv = *gvp) != (GV*)&PL_sv_undef && (subgen = GvSV(gv))
&& (hv = GvHV(gv)))
if (svp && (sv = *svp) != (SV*)&PL_sv_undef) {
DEBUG_o( Perl_deb(aTHX_ "Using cached ISA %s for package %s\n",
name, hvname) );
- return sv;
+ return (sv == &PL_sv_yes);
}
}
else {
}
}
- gvp = (GV**)hv_fetch(stash,"ISA",3,FALSE);
+ gvp = (GV**)hv_fetchs(stash, "ISA", FALSE);
if (gvp && (gv = *gvp) != (GV*)&PL_sv_undef && (av = GvAV(gv))) {
if (!hv || !subgen) {
- gvp = (GV**)hv_fetch(stash, "::ISA::CACHE::", 14, TRUE);
+ gvp = (GV**)hv_fetchs(stash, "::ISA::CACHE::", TRUE);
gv = *gvp;
if (ckWARN(WARN_MISC))
Perl_warner(aTHX_ packWARN(WARN_SYNTAX),
"Can't locate package %"SVf" for @%s::ISA",
- sv, hvname);
+ (void*)sv, hvname);
continue;
}
- if (&PL_sv_yes == isa_lookup(basestash, name, name_stash,
- len, level + 1)) {
+ if (isa_lookup(basestash, name, name_stash, len, level + 1)) {
(void)hv_store(hv,name,len,&PL_sv_yes,0);
- return &PL_sv_yes;
+ return TRUE;
}
}
(void)hv_store(hv,name,len,&PL_sv_no,0);
}
}
- return &PL_sv_no;
+ return FALSE;
}
/*
if (stash) {
HV * const name_stash = gv_stashpv(name, FALSE);
- return isa_lookup(stash, name, name_stash, strlen(name), 0) == &PL_sv_yes;
+ return isa_lookup(stash, name, name_stash, strlen(name), 0);
}
else
return FALSE;
Perl_boot_core_UNIVERSAL(pTHX)
{
dVAR;
- const char file[] = __FILE__;
+ static const char file[] = __FILE__;
newXS("UNIVERSAL::isa", XS_UNIVERSAL_isa, file);
newXS("UNIVERSAL::can", XS_UNIVERSAL_can, file);
pkg = gv_stashsv(ST(0), FALSE);
}
- gvp = pkg ? (GV**)hv_fetch(pkg,"VERSION",7,FALSE) : Null(GV**);
+ gvp = pkg ? (GV**)hv_fetchs(pkg, "VERSION", FALSE) : NULL;
if (gvp && isGV(gv = *gvp) && (sv = GvSV(gv)) && SvOK(sv)) {
SV * const nsv = sv_newmortal();
if ( vcmp( req, sv ) > 0 )
Perl_croak(aTHX_ "%s version %"SVf" (%"SVf") required--"
- "this is only version %"SVf" (%"SVf")", HvNAME_get(pkg),
- vnumify(req),vnormal(req),vnumify(sv),vnormal(sv));
+ "this is only version %"SVf" (%"SVf")", HvNAME_get(pkg),
+ (void*)vnumify(req),
+ (void*)vnormal(req),
+ (void*)vnumify(sv),
+ (void*)vnormal(sv));
}
if ( SvOK(sv) && sv_derived_from(sv, "version") ) {
if ( SvNOK(ver) ) /* may get too much accuracy */
{
char tbuf[64];
- const STRLEN len = my_sprintf(tbuf,"%.9"NVgf, SvNVX(ver));
+#ifdef USE_SNPRINTF
+ const STRLEN len = snprintf(tbuf, sizeof(tbuf), "%.9"NVgf, SvNVX(ver));
+#else
+ const STRLEN len = my_sprintf(tbuf, "%.9"NVgf, SvNVX(ver));
+#endif /* #ifdef USE_SNPRINTF */
version = savepvn(tbuf, len);
}
else
XS(XS_Regexp_DESTROY)
{
+ PERL_UNUSED_CONTEXT;
PERL_UNUSED_ARG(cv);
}
else {
if (namok && argok)
XPUSHs(Perl_newSVpvf(aTHX_ "%"SVf"(%"SVf")",
- *namsvp, *argsvp));
+ (void*)*namsvp,
+ (void*)*argsvp));
else if (namok)
- XPUSHs(Perl_newSVpvf(aTHX_ "%"SVf, *namsvp));
+ XPUSHs(Perl_newSVpvf(aTHX_ "%"SVf,
+ (void*)*namsvp));
else
XPUSHs(&PL_sv_undef);
nitem++;