diff --git a/ccp4srs/ccp4srs_container.h b/ccp4srs/ccp4srs_container.h index f4faa22..8187829 100644 --- a/ccp4srs/ccp4srs_container.h +++ b/ccp4srs/ccp4srs_container.h @@ -62,6 +62,9 @@ namespace ccp4srs { n_alloc = 0; } + Container ( const Container & ) = delete; + Container & operator = ( const Container & ) = delete; + virtual ~Container() { empty(); } diff --git a/mmdb2/mmdb_io_file.cpp b/mmdb2/mmdb_io_file.cpp index 3928eba..4e93e91 100644 --- a/mmdb2/mmdb_io_file.cpp +++ b/mmdb2/mmdb_io_file.cpp @@ -1090,17 +1090,27 @@ namespace mmdb { Cnt = BufCnt + Count; if (Cnt>BufLen) { - Cnt += BufInc; - IOB = new char[Cnt]; - if (IOBuf) { - memcpy ( IOB,IOBuf,BufCnt ); - delete[] IOBuf; + long newLen = (long)Cnt + (long)BufInc; + pstr oldBuf = IOBuf; + IOB = new char[newLen]; + if ((IOB==NULL) && (newLen>0)) { + IOSuccess = false; + return false; } + if ((oldBuf) && (BufCnt>0)) + memcpy ( IOB,oldBuf,BufCnt ); IOBuf = IOB; - BufLen = Cnt; + BufLen = (word)newLen; ownBuf = true; + if (oldBuf) + delete[] oldBuf; + } + if ((Count>0) && (IOBuf==NULL)) { + IOSuccess = false; + return false; } - memcpy ( &(IOBuf[BufCnt]),Buffer,Count ); + if (Count>0) + memcpy ( &(IOBuf[BufCnt]),Buffer,Count ); BufCnt += Count; FLength = BufCnt; IOSuccess = true; diff --git a/mmdb2/mmdb_math_graph.cpp b/mmdb2/mmdb_math_graph.cpp index b927665..de28623 100644 --- a/mmdb2/mmdb_math_graph.cpp +++ b/mmdb2/mmdb_math_graph.cpp @@ -490,16 +490,18 @@ namespace mmdb { void Graph::AddVertex ( PVertex V ) { int i; PVertex * V1; + PVertex * oldVertex; if (nAllVertices>=nVAlloc) { - nVAlloc += AllocPortion; - V1 = new PVertex[nVAlloc]; + oldVertex = vertex; + nVAlloc += AllocPortion; + V1 = new PVertex[nVAlloc]; for (i=0;iSetMMDBManager ( PManager(this),nM ); diff --git a/mmdb2/mmdb_xml_.cpp b/mmdb2/mmdb_xml_.cpp index 7a49997..22b998b 100644 --- a/mmdb2/mmdb_xml_.cpp +++ b/mmdb2/mmdb_xml_.cpp @@ -540,23 +540,24 @@ namespace mmdb { } void XMLObject::AddObject ( PXMLObject XMLObject, int lenInc ) { - PPXMLObject obj1; + PPXMLObject obj1, oldObject; int i; if (!XMLObject) return; if (nObjects>=nAlloc) { + if (lenInc<=0) lenInc = 1; nAlloc += lenInc; obj1 = new PXMLObject[nAlloc]; for (i=0;iSetParent ( this ); nObjects++; diff --git a/pisalib/chem_equilibrium.cpp b/pisalib/chem_equilibrium.cpp index 9ad0b6b..30c0e07 100755 --- a/pisalib/chem_equilibrium.cpp +++ b/pisalib/chem_equilibrium.cpp @@ -224,7 +224,7 @@ long double mass1,M,dmass1,dmass2; double lnC1,lnC2; int n; - M = totalMass*species[speciesNo]->alpha; + M = static_cast(totalMass) * species[speciesNo]->alpha; lnC1 = species[speciesNo]->lnC; lnC2 = lnC1; diff --git a/pisalib/pisa_asmstock.cpp b/pisalib/pisa_asmstock.cpp index 6a70726..3926609 100755 --- a/pisalib/pisa_asmstock.cpp +++ b/pisalib/pisa_asmstock.cpp @@ -100,7 +100,7 @@ namespace pisa { if (t<0) return UnknownType; - if (t>nAssemblies) { + if (t>=nAssemblies) { n1 = t + 10; A1 = new PAssembly[n1]; mmdb::GetVectorMemory ( c1,n1,0 ); @@ -117,6 +117,7 @@ namespace pisa { mmdb::FreeVectorMemory ( count,0 ); count = c1; nAssemblies = n1; + nAsmAlloc = n1; } if (!A[t]) { diff --git a/pisalib/pisa_engine.cpp b/pisalib/pisa_engine.cpp index 2330c2c..0d39af0 100644 --- a/pisalib/pisa_engine.cpp +++ b/pisalib/pisa_engine.cpp @@ -1883,14 +1883,16 @@ namespace pisa { if (k<0) { if (nMultSets>=nMultSetAlloc) { + PMultimerSet *oldMultSet; nMultSetAlloc += 100; US = new PMultimerSet[nMultSetAlloc]; for (i=0;i=nVAlloc) { nV1 = nVertices + 20; V1 = new PVertex[nV1]; - for (i=0;i