********> bugfix.8 Author: Dave Case Date: 4/25/02 Programs: LEaP Severity: Moderate Description: The code intended to handle residue numbers greater than 9999, or atoms numbers greater than 99999, is broken. Fix: Make the following changes to amber7/src/leap/src/leap/pdb_read.c ----------------------------------------------------------------------------- *** pdb_read.c 2002/01/02 11:23:08 7.4 --- pdb_read.c 2002/05/15 16:49:37 *************** *** 241,259 **** */ int atom_overflow = 0, residue_overflow = 0; ! if (isalnum(buffer[11])) atom_overflow = 1; ! if (isalnum(buffer[26])) residue_overflow = 1; if (atom_overflow && !residue_overflow) { fmt = ! "ATOM %6d%-4s%C%-3s %C%4d%C %8.3f%8.3f%8.3f%6.2f%6.2f %3D"; } else if (!atom_overflow && residue_overflow) { fmt = ! "ATOM %5d %-4s%C%-3s %C%5d%C %8.3f%8.3f%8.3f%6.2f%6.2f %3D"; } else if (atom_overflow && residue_overflow) { fmt = ! "ATOM %6d%-4s%C%-3s %C%5d%C %8.3f%8.3f%8.3f%6.2f%6.2f %3D"; } pdb_sscanf(buffer, fmt, &r.pdb.atom.serial_num, --- 239,257 ---- */ int atom_overflow = 0, residue_overflow = 0; ! if (isdigit(buffer[11])) atom_overflow = 1; ! if (isdigit(buffer[26])) residue_overflow = 1; if (atom_overflow && !residue_overflow) { fmt = ! "%6 %6d%4s%c%3s %c%4d%c %8f%8f%8f%6f%6f %3d"; } else if (!atom_overflow && residue_overflow) { fmt = ! "%6 %5d %4s%c%3s %c%5d%c %8f%8f%8f%6f%6f %3d"; } else if (atom_overflow && residue_overflow) { fmt = ! "%6 %6d%4s%c%3s %c%5d%c %8f%8f%8f%6f%6f %3d"; } pdb_sscanf(buffer, fmt, &r.pdb.atom.serial_num, ----------------------------------------------------------------------------- Workarounds: none Files affected: amber7/src/leap/src/leap/pdb_read.c