{
mp *m;
if (SvROK(sv)) {
- if (sv_derived_from(sv, "Catacomb::MP") ||
- sv_derived_from(sv, "Catacomb::GF"))
+ if (sv_derived_from(sv, "Catacomb::MP"))
m = (mp *)SvIV((SV *)SvRV(sv));
else {
va_list ap;
sv_vsetpvfn(t, what, strlen(what), &ap, 0, 0, 0);
croak("%s is not of type %s", SvPVX(t), ty);
}
+ if (m && keep)
+ MP_COPY(m);
} else {
if (SvIOK(sv))
m = mp_fromiv(MP_NEW, SvIV(sv));