}
#ifdef USE_ITHREADS
-# define ITEM_SV(item) *av_fetch(comppad, (item)->pad_offset, FALSE);
+# define ITEM_SV(item) (comppad ? \
+ *av_fetch(comppad, (item)->pad_offset, FALSE) : NULL);
#else
# define ITEM_SV(item) UNOP_AUX_item_sv(item)
#endif
int derefs = 0;
SV *out = newSVpvn_flags("",0,SVs_TEMP);
#ifdef USE_ITHREADS
- PADLIST * const padlist = CvPADLIST(cv);
- PAD *comppad = PadlistARRAY(padlist)[1];
+ PAD *comppad;
+
+ if (cv) {
+ PADLIST *padlist = CvPADLIST(cv);
+ comppad = PadlistARRAY(padlist)[1];
+ }
+ else
+ comppad = NULL;
#endif
PERL_ARGS_ASSERT_MULTIDEREF_STRINGIFY;
/* FALLTHROUGH */
case MDEREF_AV_gvav_aelem:
derefs = 1;
- sv = ITEM_SV(++items);
+ items++;
+ sv = ITEM_SV(items);
S_append_gv_name(aTHX_ (GV*)sv, out);
goto do_elem;
NOT_REACHED; /* NOTREACHED */
is_hash = TRUE;
/* FALLTHROUGH */
case MDEREF_AV_gvsv_vivify_rv2av_aelem:
- sv = ITEM_SV(++items);
+ items++;
+ sv = ITEM_SV(items);
S_append_gv_name(aTHX_ (GV*)sv, out);
goto do_vivify_rv2xv_elem;
NOT_REACHED; /* NOTREACHED */
switch (actions & MDEREF_INDEX_MASK) {
case MDEREF_INDEX_const:
if (is_hash) {
- STRLEN cur;
- char *s;
- sv = ITEM_SV(++items);
- s = SvPV(sv, cur);
- pv_pretty(out, s, cur, 30,
- NULL, NULL,
- (PERL_PV_PRETTY_NOCLEAR
- |PERL_PV_PRETTY_QUOTE
- |PERL_PV_PRETTY_ELLIPSES));
+ items++;
+ sv = ITEM_SV(items);
+ if (!sv)
+ sv_catpvs_nomg(out, "???");
+ else {
+ STRLEN cur;
+ char *s;
+ s = SvPV(sv, cur);
+ pv_pretty(out, s, cur, 30,
+ NULL, NULL,
+ (PERL_PV_PRETTY_NOCLEAR
+ |PERL_PV_PRETTY_QUOTE
+ |PERL_PV_PRETTY_ELLIPSES));
+ }
}
else
Perl_sv_catpvf(aTHX_ out, "%"IVdf, (++items)->iv);
S_append_padvar(aTHX_ (++items)->pad_offset, cv, out, 1, 0, 1);
break;
case MDEREF_INDEX_gvsv:
- sv = ITEM_SV(++items);
+ items++;
+ sv = ITEM_SV(items);
S_append_gv_name(aTHX_ (GV*)sv, out);
break;
}
assert(smeta); assert(which); assert(data)
PERL_CALLCONV SV* Perl_multideref_stringify(pTHX_ const OP* o, CV *cv)
- __attribute__nonnull__(pTHX_1)
- __attribute__nonnull__(pTHX_2);
+ __attribute__nonnull__(pTHX_1);
#define PERL_ARGS_ASSERT_MULTIDEREF_STRINGIFY \
- assert(o); assert(cv)
+ assert(o)
PERL_CALLCONV NV Perl_my_atof(pTHX_ const char *s)
__attribute__nonnull__(pTHX_1);