{
fctx_prime *f;
- if (!MP_POSP(p) || !MP_ODDP(p))
- return (0);
f = CREATE(fctx_prime);
f->f.ops = &fops;
- mpmont_create(&f->mm, p);
+ if (mpmont_create(&f->mm, p)) {
+ DESTROY(f);
+ return (0);
+ }
f->f.zero = MP_ZERO;
f->f.one = f->mm.r;
f->f.m = f->mm.m;