/* We usually try to add a non-existent subroutine in case of AUTOLOAD. */
/* (But not in defined().) */
CV *cv = sv_2cv(TOPs, &stash, &gv, !(op->op_flags & OPf_SPECIAL));
-
- if (!cv)
+ if (cv) {
+ if (CvCLONE(cv))
+ cv = (CV*)sv_2mortal((SV*)cv_clone(cv));
+ }
+ else
cv = (CV*)&sv_undef;
SETs((SV*)cv);
RETURN;
{
dSP; dATARGET; tryAMAGICbin(pow,opASSIGN);
{
- dPOPTOPnnrl_ul;
+ dPOPTOPnnrl;
SETn( pow( left, right) );
RETURN;
}
{
dSP; dATARGET; tryAMAGICbin(mult,opASSIGN);
{
- dPOPTOPnnrl_ul;
+ dPOPTOPnnrl;
SETn( left * right );
RETURN;
}
{
dSP; dATARGET; tryAMAGICbin(div,opASSIGN);
{
- dPOPPOPnnrl_ul;
+ dPOPPOPnnrl;
double value;
if (right == 0.0)
DIE("Illegal division by zero");
SETi( left % right );
}
else {
- register double left = USE_LEFT(TOPs) ? SvNV(TOPs) : 0.0;
+ register double left = TOPn;
if (left < 0.0)
SETu( (right - (U_V(-left) - 1) % right) - 1 );
else