#define EXP_TYPE ec
#define EXP_COPY(d, p) do { \
- (d).x = MP_COPY((p).x); \
- (d).y = MP_COPY((p).y); \
- (d).z = (p).z ? MP_COPY((p).z) : MP_NEW; \
+ if (EC_ATINF(&(p))) \
+ (d).x = (d).y = (d).z = MP_NEW; \
+ else { \
+ (d).x = MP_COPY((p).x); \
+ (d).y = MP_COPY((p).y); \
+ (d).z = (p).z ? MP_COPY((p).z) : MP_NEW; \
+ } \
} while (0)
#define EXP_DROP(x) EC_DESTROY(&(x))