********> bugfix.37 Author: Bill Ross Date: 4/26/99 Programs: Leap Severity: Moderate Description: Could crash when doing saveAmberParm-family commands when torsions or impropers have comments attached. Cause: Wrong memory address passed for copying comments. Fix: Make the following changes to unitio.c ---------------------------------------------------------------------------- *** OLD unitio.c --- NEW unitio.c *************** *** 4485,4491 for ( i=0; ipsParameters); i++ ) { ParmSetTorsion( uUnit->psParameters, i, sAtom1, sAtom2, sAtom3, sAtom4, ! &iN, &dKp, &dP0, &iType, sDesc ); MESSAGE(( "Torsion %d %s-%s-%s-%s %d %lf %lf\n", i, sAtom1, sAtom2, sAtom3, sAtom4, iN, dKp, dP0 )); --- 4485,4491 ----- for ( i=0; ipsParameters); i++ ) { ParmSetTorsion( uUnit->psParameters, i, sAtom1, sAtom2, sAtom3, sAtom4, ! &iN, &dKp, &dP0, sDesc ); MESSAGE(( "Torsion %d %s-%s-%s-%s %d %lf %lf\n", i, sAtom1, sAtom2, sAtom3, sAtom4, iN, dKp, dP0 )); *************** *** 4494,4500 for ( i=0; ipsParameters); i++ ) { ParmSetImproper( uUnit->psParameters, i, sAtom1, sAtom2, sAtom3, sAtom4, ! &iN, &dKp, &dP0, &iType, sDesc ); MESSAGE(( "Improper %d %s-%s-%s-%s %d %lf %lf\n", i, sAtom1, sAtom2, sAtom3, sAtom4, iN, dKp, dP0 )); --- 4494,4500 ----- for ( i=0; ipsParameters); i++ ) { ParmSetImproper( uUnit->psParameters, i, sAtom1, sAtom2, sAtom3, sAtom4, ! &iN, &dKp, &dP0, sDesc ); MESSAGE(( "Improper %d %s-%s-%s-%s %d %lf %lf\n", i, sAtom1, sAtom2, sAtom3, sAtom4, iN, dKp, dP0 )); *************** *** 4513,4519 for ( i=0; ipsParameters); i++ ) { ParmSetTorsion( uUnit->psParameters, i, sAtom1, sAtom2, sAtom3, sAtom4, ! &iN, &dKp, &dP0, &iType, sDesc ); dTemp = iN; FortranWriteDouble( dTemp ); } --- 4513,4519 ----- for ( i=0; ipsParameters); i++ ) { ParmSetTorsion( uUnit->psParameters, i, sAtom1, sAtom2, sAtom3, sAtom4, ! &iN, &dKp, &dP0, sDesc ); dTemp = iN; FortranWriteDouble( dTemp ); } *************** *** 4520,4526 for ( i=0; ipsParameters); i++ ) { ParmSetImproper( uUnit->psParameters, i, sAtom1, sAtom2, sAtom3, sAtom4, ! &iN, &dKp, &dP0, &iType, sDesc ); dTemp = iN; FortranWriteDouble( dTemp ); } --- 4520,4526 ----- for ( i=0; ipsParameters); i++ ) { ParmSetImproper( uUnit->psParameters, i, sAtom1, sAtom2, sAtom3, sAtom4, ! &iN, &dKp, &dP0, sDesc ); dTemp = iN; FortranWriteDouble( dTemp ); } *************** *** 4537,4543 for ( i=0; ipsParameters); i++ ) { ParmSetTorsion( uUnit->psParameters, i, sAtom1, sAtom2, sAtom3, sAtom4, ! &iN, &dKp, &dP0, &iType, sDesc ); FortranWriteDouble( dP0 ); } for ( i=0; ipsParameters); i++ ) { --- 4537,4543 ----- for ( i=0; ipsParameters); i++ ) { ParmSetTorsion( uUnit->psParameters, i, sAtom1, sAtom2, sAtom3, sAtom4, ! &iN, &dKp, &dP0, sDesc ); FortranWriteDouble( dP0 ); } for ( i=0; ipsParameters); i++ ) { *************** *** 4543,4549 for ( i=0; ipsParameters); i++ ) { ParmSetImproper( uUnit->psParameters, i, sAtom1, sAtom2, sAtom3, sAtom4, ! &iN, &dKp, &dP0, &iType, sDesc ); FortranWriteDouble( dP0 ); } /* Write the torsion RESTRAINT constants AND set the index */ --- 4543,4549 ----- for ( i=0; ipsParameters); i++ ) { ParmSetImproper( uUnit->psParameters, i, sAtom1, sAtom2, sAtom3, sAtom4, ! &iN, &dKp, &dP0, sDesc ); FortranWriteDouble( dP0 ); } /* Write the torsion RESTRAINT constants AND set the index */ ----------------------------------------------------------------------------