********> bugfix.46 Author: Bill Ross Date: 10/3/95 Programs: Leap Severity: Moderate Problem: Loading PREP files (loadamberprep command): does not detect extra charges in CHARGE section, which can cause core dump or memory corruption. Fix: Make the following change to amber.c: ---------------------------------------------------------------------- *** OLD amber.c --- NEW amber.c *************** *** 1209,1214 iRead = sscanf( sLine, "%lf %lf %lf %lf %lf", &da[0], &da[1], &da[2], &da[3], &da[4] ); for ( i=0; iaAtom, da[i] ); --- 1209,1215 ----- iRead = sscanf( sLine, "%lf %lf %lf %lf %lf", &da[0], &da[1], &da[2], &da[3], &da[4] ); + if ( iRead<=0 ) break; for ( i=0; i= iIndex ) { VP0((" WARNING - skipping extra charge in: %s\n", *************** *** 1210,1215 &da[0], &da[1], &da[2], &da[3], &da[4] ); for ( i=0; iaAtom, da[i] ); iCharge++; --- 1211,1221 ----- &da[3], &da[4] ); if ( iRead<=0 ) break; for ( i=0; i= iIndex ) { + VP0((" WARNING - skipping extra charge in: %s\n", + sResidueDescription(rRes) )); + continue; + } AtomSetCharge( PVAI( vaCoor, TREENODEt, iCharge )->aAtom, da[i] ); iCharge++; *************** *** 1214,1220 da[i] ); iCharge++; } - if ( iRead<=0 ) break; } } else if ( strcmp( saStr[1], "IMPROPER" )==0 ) { int problem = 0; --- 1220,1225 ----- da[i] ); iCharge++; } } } else if ( strcmp( saStr[1], "IMPROPER" )==0 ) { int problem = 0; *************** ---------------------------------------------------------------------- Temporary workarounds: make sure correct # of charges is in prep.in; ideally, use per-atom-line charge format instead of CHARGE section. --