ref: 8c6c2b7216b6039188e76d26f9a62c4cb8ee4fca
dir: /sys/src/libmp/port/mpfield.c/
#include "os.h" #include <mp.h> #include "dat.h" mpint* mpfield(mpint *N) { Mfield *f; if(N == nil || N->flags & (MPfield|MPstatic)) return N; if((f = cnfield(N)) != nil) goto Exchange; if((f = gmfield(N)) != nil) goto Exchange; return N; Exchange: setmalloctag(f, getcallerpc(&N)); mpfree(N); return f; }