Skip Menu |

This queue is for tickets about the Devel-CallChecker CPAN distribution.

Report information
The Basics
Id: 99805
Status: resolved
Priority: 0/
Queue: Devel-CallChecker

People
Owner: Nobody in particular
Requestors: 'spro^^*%*^6ut# [...] &$%*c
Cc:
AdminCc:

Bug Information
Severity: (no value)
Broken in: (no value)
Fixed in: (no value)



Subject: [PATCH] lastsib support
Under bleadperl, it fails: t/callck.t ..... 3/79 Assertion failed: (kid->op_lastsib), function S_finalize_op, file op.c, line 2293. See the attached patch.
Subject: open_qpdWVjDJ.txt
diff -rup Devel-CallChecker-0.006-niU_1f-orig/t/callck.xs Devel-CallChecker-0.006-niU_1f/t/callck.xs --- Devel-CallChecker-0.006-niU_1f-orig/t/callck.xs 2013-09-21 12:35:16.000000000 -0700 +++ Devel-CallChecker-0.006-niU_1f/t/callck.xs 2014-10-25 22:02:20.000000000 -0700 @@ -66,16 +66,23 @@ static OP *THX_ck_entersub_multi_sum(pTH { OP *sumop = NULL; OP *pushop = cUNOPx(entersubop)->op_first; + OP *parent; PERL_UNUSED_ARG(namegv); PERL_UNUSED_ARG(ckobj); - if (!pushop->op_sibling) + if (!pushop->op_sibling) { + parent = pushop; pushop = cUNOPx(pushop)->op_first; + } while (1) { OP *aop = pushop->op_sibling; if (!aop->op_sibling) break; +#ifdef op_sibling_splice + op_sibling_splice(parent, pushop, 1, NULL); +#else pushop->op_sibling = aop->op_sibling; aop->op_sibling = NULL; +#endif op_contextualize(aop, G_SCALAR); if (sumop) { sumop = newBINOP(OP_ADD, 0, sumop, aop);
Subject: Re: [rt.cpan.org #99805] [PATCH] lastsib support
Date: Sat, 21 Mar 2015 11:28:02 +0000
To: Father Chrysostomos via RT <bug-Devel-CallChecker [...] rt.cpan.org>
From: Zefram <zefram [...] fysh.org>
Your patch misses some other points where op_sibling pointers are followed under the assumption that they refer to siblings. Your patch may make the module pass its test suite, but would leave it buggy. I saw something similar with respect to your padlist patches for modules, which also made things superficially work while introducing bugs. (I still haven't sorted that mess out, after I released one of my modules with a patch derived from yours that turned out to still be buggy.) I think (a) we're going to see a lot of CPAN modules become buggy by virtue of the change of meaning of op_sibling, and (b) you need to change how you tackle modules that got broken by blead. -zefram
On Sat Mar 21 07:28:15 2015, zefram@fysh.org wrote: Show quoted text
> (b) you need to change how you > tackle modules that got broken by blead.
Do you have any suggestions? Usually I find such modules to be large incomprehensible beasts, and patching ten of them is mentally exhausting already. While I would like to do more, I’m not sure I can.
Subject: Re: [rt.cpan.org #99805] [PATCH] lastsib support
Date: Wed, 25 Mar 2015 23:11:17 +0000
To: Father Chrysostomos via RT <bug-Devel-CallChecker [...] rt.cpan.org>
From: Zefram <zefram [...] fysh.org>
Father Chrysostomos via RT wrote: Show quoted text
>Do you have any suggestions? Usually I find such modules to be large >incomprehensible beasts, and patching ten of them is mentally exhausting >already. While I would like to do more, I'm not sure I can.
The immediate way to improve would be to refrain from providing patches when you're overwhelmed and likely to make a mistake. You can point out the incompatibility and describe the nature of the API changes without requiring any deep understanding of the internals of someone else's module. Do less: quality is in this case much more important than quantity. -zefram
PERL_OP_PARENT support was introduced in Devel-CallChecker-0.007.