diff --git a/src/fix_halt.h b/src/fix_halt.h index bc7f0055a5..156397a4b5 100644 --- a/src/fix_halt.h +++ b/src/fix_halt.h @@ -36,7 +36,7 @@ class FixHalt : public Fix { private: int attribute,operation,eflag,ivar; - double attvalue,value; + double value; char *idvar; double bondmax(); diff --git a/src/region.cpp b/src/region.cpp index 1244b57365..234909feb9 100644 --- a/src/region.cpp +++ b/src/region.cpp @@ -578,34 +578,21 @@ void Region::write_restart(FILE *fp) int Region::restart(char *buf, int &n) { - int sizeid = buf[n]; + int size = *((int *)(buf+n)); n += sizeof(int); - char *restart_id = new char[sizeid]; - for (int i = 0; i < sizeid; i++) - restart_id[i] = buf[n++]; - if (strcmp(restart_id,id) != 0) return 0; + if ((size <= 0) || (strcmp(buf+n,id) != 0)) return 0; + n += size; - int sizestyle = buf[n]; + size = *((int *)(buf+n)); n += sizeof(int); - char *restart_style = new char[sizestyle]; - for (int i = 0; i < sizestyle; i++) - restart_style[i] = buf[n++]; - if (strcmp(restart_style,style) != 0) return 0; + if ((size <= 0) || (strcmp(buf+n,style) != 0)) return 0; + n += size; - int restart_nreg = buf[n]; + int restart_nreg = *((int *)(buf+n)); n += sizeof(int); if (restart_nreg != nregion) return 0; - char *rlist = new char[size_restart*sizeof(double)]; - for (int i = 0; i < size_restart*sizeof(double); i++) - rlist[i] = buf[n++]; - for (int i = 0; i < size_restart; i++){ - prev[i] = ((double *)rlist)[i]; - } - - delete [] rlist; - delete [] restart_id; - delete [] restart_style; + memcpy(prev,buf+n,size_restart*sizeof(double)); return 1; } diff --git a/src/region_intersect.cpp b/src/region_intersect.cpp index 02e3769ca6..a673ba9d11 100644 --- a/src/region_intersect.cpp +++ b/src/region_intersect.cpp @@ -323,30 +323,23 @@ void RegIntersect::write_restart(FILE *fp) int RegIntersect::restart(char *buf, int& n) { - int sizeid = buf[n]; + int size = *((int *)(buf+n)); n += sizeof(int); - char *restart_id = new char[sizeid]; - for (int i = 0; i < sizeid; i++) - restart_id[i] = buf[n++]; - if (strcmp(restart_id,id) != 0) return 0; + if ((size <= 0) || (strcmp(buf+n,id) != 0)) return 0; + n += size; - int sizestyle = buf[n]; + size = *((int *)(buf+n)); n += sizeof(int); + if ((size <= 0) || (strcmp(buf+n,style) != 0)) return 0; + n += size; - char *restart_style = new char[sizestyle]; - for (int i = 0; i < sizestyle; i++) - restart_style[i] = buf[n++]; - if (strcmp(restart_style,style) != 0) return 0; - - int restart_nreg = buf[n]; + int restart_nreg = *((int *)(buf+n)); n += sizeof(int); if (restart_nreg != nregion) return 0; - for (int ilist = 0; ilist < nregion; ilist++){ - if (!domain->regions[list[ilist]]->restart(buf, n)){ - return 0; - } - } + for (int ilist = 0; ilist < nregion; ilist++) + if (!domain->regions[list[ilist]]->restart(buf, n)) return 0; + return 1; } diff --git a/src/region_union.cpp b/src/region_union.cpp index c506c811c3..40bf35b0de 100644 --- a/src/region_union.cpp +++ b/src/region_union.cpp @@ -315,27 +315,23 @@ void RegUnion::write_restart(FILE *fp) int RegUnion::restart(char *buf, int &n) { - int sizeid = buf[n]; + int size = *((int *)(buf+n)); n += sizeof(int); - char *restart_id = new char[sizeid]; - for (int i = 0; i < sizeid; i++) - restart_id[i] = buf[n++]; - if (strcmp(restart_id,id) != 0) return 0; + if ((size <= 0) || (strcmp(buf+n,id) != 0)) return 0; + n += size; - int sizestyle = buf[n]; + size = *((int *)(buf+n)); n += sizeof(int); - char *restart_style = new char[sizestyle]; - for (int i = 0; i < sizestyle; i++) - restart_style[i] = buf[n++]; - if (strcmp(restart_style,style) != 0) return 0; + if ((size <= 0) || (strcmp(buf+n,style) != 0)) return 0; + n += size; - int restart_nreg = buf[n]; + int restart_nreg = *((int *)(buf+n)); n += sizeof(int); if (restart_nreg != nregion) return 0; - for (int ilist = 0; ilist < nregion; ilist++){ + for (int ilist = 0; ilist < nregion; ilist++) if (!domain->regions[list[ilist]]->restart(buf, n)) return 0; - } + return 1; }