We already check that the first kid of the method op is a const op. Thus
it must have been checked before. Otherwise, someone has returned a const
op from a custom check function and haven't recalled in the old check
chain, which is bad and ultimately their fault.
line_t line;
SV *sv;
- if (oi) {
- sv = sv_2mortal(newSVpvn(oi->buf, oi->len));
- pos = oi->pos;
- /* Keep the old line so that we really point to the first line of the
- * expression. */
- line = oi->line;
- } else {
- sv = cSVOPx_sv(op);
- if (!SvPOK(sv) || (SvTYPE(sv) < SVt_PV))
- goto done;
- sv = sv_mortalcopy(sv);
+ if (!oi)
+ goto done;
- if (!indirect_find(sv, PL_oldbufptr, &pos))
- goto done;
- line = CopLINE(&PL_compiling);
- }
+ sv = sv_2mortal(newSVpvn(oi->buf, oi->len));
+ pos = oi->pos;
+ /* Keep the old line so that we really point to the first line of the
+ * expression. */
+ line = oi->line;
o = CALL_FPTR(indirect_old_ck_method)(aTHX_ o);
/* o may now be a method_named */