diff --git a/fieldpattern.cpp b/fieldpattern.cpp index 571a55b5..ad58f4f8 100644 --- a/fieldpattern.cpp +++ b/fieldpattern.cpp @@ -721,7 +721,9 @@ fpattern& getcurrfp() { return fp; } if(sphere || euclid) return fp_invalid; - return fp43; + if(S7 == 7 && S3 == 3) + return fp43; + return fp_invalid; } // extra information for field quotient extra configuration diff --git a/graph.cpp b/graph.cpp index 4754dd8c..84b8f39d 100644 --- a/graph.cpp +++ b/graph.cpp @@ -5823,7 +5823,7 @@ auto graphcm = addHook(clearmemory, 0, [] () { void resetGeometry() { precalc(); - if(hyperbolic) currfp.analyze(); + if(hyperbolic && &currfp != &fieldpattern::fp_invalid) currfp.analyze(); #if CAP_GL resetGL(); #endif diff --git a/heptagon.cpp b/heptagon.cpp index c316b319..60f92c43 100644 --- a/heptagon.cpp +++ b/heptagon.cpp @@ -74,7 +74,8 @@ heptagon *buildHeptagon(heptagon *parent, int d, hstate s, int pard = 0, int fix h->rval0 = h->rval1 = 0; h->emeraldval = emerald_heptagon(parent->emeraldval, d); h->zebraval = zebra_heptagon(parent->zebraval, d); - h->fieldval = currfp.connections[fieldpattern::btspin(parent->fieldval, d)]; + if(&currfp != &fieldpattern::fp_invalid) + h->fieldval = currfp.connections[fieldpattern::btspin(parent->fieldval, d)]; if(a38) h->fiftyval = fifty_38(parent->fiftyval, d); else if(parent->s == hsOrigin) diff --git a/pattern2.cpp b/pattern2.cpp index fd615a79..0a830f92 100644 --- a/pattern2.cpp +++ b/pattern2.cpp @@ -355,6 +355,7 @@ int fieldval_uniq(cell *c) { return gmod(p.first * torusconfig::dx + p.second * torusconfig::dy, torusconfig::qty); } else if(binarytiling || archimedean) return 0; + else if(&currfp == &fp_invalid) return 0; else if(ctof(c) || NONSTDVAR) return c->master->fieldval/S7; else { int z = 0;