diff --git a/cif/CIFrdcl.c b/cif/CIFrdcl.c index 7edc8845..553c79cc 100644 --- a/cif/CIFrdcl.c +++ b/cif/CIFrdcl.c @@ -1497,15 +1497,20 @@ CIFReadCellCleanup(filetype) UndoDisable(); - for (pNum = 0; pNum < MAXCIFRLAYERS; pNum++) + /* cifplanes should be valid, but don't crash magic if not */ + if (cifplanes != (ClientData)CLIENTDEFAULT) { - if (cifplanes[pNum] != NULL) + + for (pNum = 0; pNum < MAXCIFRLAYERS; pNum++) { - DBFreePaintPlane(cifplanes[pNum]); - TiFreePlane(cifplanes[pNum]); + if (cifplanes[pNum] != NULL) + { + DBFreePaintPlane(cifplanes[pNum]); + TiFreePlane(cifplanes[pNum]); + } } + freeMagic((char *)def->cd_client); } - freeMagic((char *)def->cd_client); def->cd_client = (ClientData)CLIENTDEFAULT; #if 0