Changeset 14178b


Ignore:
Timestamp:
Oct 10, 2008, 1:36:06 PM (17 years ago)
Author:
Frederik Heber <heber@…>
Children:
3b470f
Parents:
d01f4d
Message:

BUGFIX: AssignKeySetsToFragment() had FragmentCounter-- at wrong place

+ MoleculeLeafClass::AssignKeySetsToFragment(): FragmentCounter was decreased even when no keyset had been scanned, setting it to -1, bad for the subsequent free. It has to be decreased again right after the recursive call. Begin and end messages added. Free checks for FreeList=true and ListOfLocalAtoms != NULL (safety measure).
+ MoleculeLeafClass::FillBondStructureFromReference(): No BUG here (no keyset check to prevent increase for subsequent decrease), but same changes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • molecuilder/src/moleculelist.cpp

    rd01f4d r14178b  
    578578  int AtomNo;
    579579
     580  *out << Verbose(1) << "Begin of FillBondStructureFromReference." << endl;
    580581  // fill ListOfLocalAtoms if NULL was given
    581582  if (!FillListOfLocalAtoms(out, ListOfLocalAtoms, FragmentCounter, reference->AtomCount, FreeList)) {
     
    606607    if (next != NULL)
    607608      status = next->FillBondStructureFromReference(out, reference, FragmentCounter, ListOfLocalAtoms);
    608   }
    609  
    610   FragmentCounter--;
    611   if (FreeList) {
     609    FragmentCounter--;
     610  }
     611 
     612  if ((FreeList) && (ListOfLocalAtoms != NULL)) {
    612613    // free the index lookup list
    613614    Free((void **)&ListOfLocalAtoms[FragmentCounter], "MoleculeLeafClass::FillBondStructureFromReference - **ListOfLocalAtoms[]");
     
    616617  }
    617618  FragmentCounter--;
     619  *out << Verbose(1) << "End of FillBondStructureFromReference." << endl;
    618620  return status;
    619621};
     
    706708  int KeySetCounter = 0;
    707709 
     710  *out << Verbose(1) << "Begin of AssignKeySetsToFragment." << endl;
    708711  // fill ListOfLocalAtoms if NULL was given
    709712  if (!FillListOfLocalAtoms(out, ListOfLocalAtoms, FragmentCounter, reference->AtomCount, FreeList)) {
     
    745748    if (next != NULL)
    746749      next->AssignKeySetsToFragment(out, reference, KeySetList, ListOfLocalAtoms, FragmentList, FragmentCounter, FreeList);
     750    FragmentCounter--;
    747751  } else
    748752    *out << Verbose(1) << "KeySetList is NULL or empty." << endl;
    749753 
    750   FragmentCounter--;
    751   if (FreeList) {
     754  if ((FreeList) && (ListOfLocalAtoms != NULL)) {
    752755    // free the index lookup list
    753756    Free((void **)&ListOfLocalAtoms[FragmentCounter], "MoleculeLeafClass::AssignKeySetsToFragment - **ListOfLocalAtoms[]");
     
    755758      Free((void **)&ListOfLocalAtoms, "MoleculeLeafClass::AssignKeySetsToFragment - ***ListOfLocalAtoms");
    756759  }
     760  *out << Verbose(1) << "End of AssignKeySetsToFragment." << endl;
    757761  return status;
    758762};
Note: See TracChangeset for help on using the changeset viewer.