--- ray/src/rt/RcontribSimulManager.cpp 2025/10/23 16:33:39 2.17 +++ ray/src/rt/RcontribSimulManager.cpp 2025/10/24 18:37:05 2.18 @@ -1,5 +1,5 @@ #ifndef lint -static const char RCSid[] = "$Id: RcontribSimulManager.cpp,v 2.17 2025/10/23 16:33:39 greg Exp $"; +static const char RCSid[] = "$Id: RcontribSimulManager.cpp,v 2.18 2025/10/24 18:37:05 greg Exp $"; #endif /* * RcontribSimulManager.cpp @@ -120,6 +120,11 @@ formstr(int f) RdataShare * fileDataShare(const char *name, RCOutputOp op, size_t siz) { + if (op == RCOrecover && access(name, R_OK|W_OK) < 0) { + sprintf(errmsg, "cannot recover from '%s'", name); + error(SYSTEM, errmsg); + return NULL; + } return new RdataShareFile(name, RSDOflags[op], siz); } @@ -127,6 +132,11 @@ fileDataShare(const char *name, RCOutputOp op, size_t RdataShare * mapDataShare(const char *name, RCOutputOp op, size_t siz) { + if (op == RCOrecover && access(name, R_OK|W_OK) < 0) { + sprintf(errmsg, "cannot recover from '%s'", name); + error(SYSTEM, errmsg); + return NULL; + } return new RdataShareMap(name, RSDOflags[op], siz); } @@ -387,7 +397,7 @@ RcontribSimulManager::PrepOutput() if (rd < 0) return -1; if (rd >= op->nRows) { - if (remWarnings >= 0) { + if (remWarnings > 0) { sprintf(errmsg, "recovered output '%s' is complete", op->GetName()); error(WARNING, --remWarnings ? errmsg : "etc...");