summaryrefslogtreecommitdiff
path: root/pp.h
diff options
context:
space:
mode:
Diffstat (limited to 'pp.h')
-rw-r--r--pp.h20
1 files changed, 11 insertions, 9 deletions
diff --git a/pp.h b/pp.h
index 21d3c9d867..1dfd66526a 100644
--- a/pp.h
+++ b/pp.h
@@ -398,17 +398,19 @@ and C<PUSHu>.
#define AMGf_unary 8
#define tryAMAGICbinW_var(meth_enum,assign,set) STMT_START { \
- if (PL_amagic_generation) { \
- SV* tmpsv; \
- SV* const right= *(sp); SV* const left= *(sp-1);\
- if ((SvAMAGIC(left)||SvAMAGIC(right))&&\
- (tmpsv=amagic_call(left, \
+ if (PL_amagic_generation) { \
+ SV* const left = *(sp-1); \
+ SV* const right = *(sp); \
+ if ((SvAMAGIC(left)||SvAMAGIC(right))) {\
+ SV * const tmpsv = amagic_call(left, \
right, \
meth_enum, \
- (assign)? AMGf_assign: 0))) {\
- SPAGAIN; \
- (void)POPs; set(tmpsv); RETURN; } \
- } \
+ (assign)? AMGf_assign: 0); \
+ if (tmpsv) { \
+ SPAGAIN; \
+ (void)POPs; set(tmpsv); RETURN; } \
+ } \
+ } \
} STMT_END
#define tryAMAGICbinW(meth,assign,set) \