Changeset 4ef101


Ignore:
Timestamp:
Nov 5, 2009, 6:14:08 PM (16 years ago)
Author:
Frederik Heber <heber@…>
Children:
fc420f
Parents:
543ce4
Message:

LEAKFIX: ReturnFullMatrixForSymmetric() and InverseMatrix() have Malloc()s, in code was delete(), not Free()

  • valgrind showed the "mismatch free/delete" and is fixed. (mostly concerned functions in molecule_geometry.cpp and analysis_correlation.cpp)
  • LEAKFIX: logger and errorLogger instances were not free'd, this is done.

Signed-off-by: Frederik Heber <heber@…>

Location:
molecuilder/src
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • molecuilder/src/analysis_correlation.cpp

    r543ce4 r4ef101  
    9393  for (MoleculeList::const_iterator MolWalker = molecules->ListOfMolecules.begin(); MolWalker != molecules->ListOfMolecules.end(); MolWalker++)
    9494    if ((*MolWalker)->ActiveFlag) {
    95       const double * const FullMatrix = ReturnFullMatrixforSymmetric((*MolWalker)->cell_size);
    96       const double * const FullInverseMatrix = InverseMatrix(FullMatrix);
     95      double * FullMatrix = ReturnFullMatrixforSymmetric((*MolWalker)->cell_size);
     96      double * FullInverseMatrix = InverseMatrix(FullMatrix);
    9797      eLog() << Verbose(2) << "Current molecule is " << *MolWalker << "." << endl;
    9898      atom *Walker = (*MolWalker)->start;
     
    138138        }
    139139      }
     140      Free(&FullMatrix);
     141      Free(&FullInverseMatrix);
    140142    }
    141143
     
    201203  for (MoleculeList::const_iterator MolWalker = molecules->ListOfMolecules.begin(); MolWalker != molecules->ListOfMolecules.end(); MolWalker++)
    202204    if ((*MolWalker)->ActiveFlag) {
    203       const double * const FullMatrix = ReturnFullMatrixforSymmetric((*MolWalker)->cell_size);
    204       const double * const FullInverseMatrix = InverseMatrix(FullMatrix);
     205      double * FullMatrix = ReturnFullMatrixforSymmetric((*MolWalker)->cell_size);
     206      double * FullInverseMatrix = InverseMatrix(FullMatrix);
    205207      Log() << Verbose(2) << "Current molecule is " << *MolWalker << "." << endl;
    206208      atom *Walker = (*MolWalker)->start;
     
    224226        }
    225227      }
     228      Free(&FullMatrix);
     229      Free(&FullInverseMatrix);
    226230    }
    227231
     
    299303  for (MoleculeList::const_iterator MolWalker = molecules->ListOfMolecules.begin(); MolWalker != molecules->ListOfMolecules.end(); MolWalker++)
    300304    if ((*MolWalker)->ActiveFlag) {
    301       const double * const FullMatrix = ReturnFullMatrixforSymmetric((*MolWalker)->cell_size);
    302       const double * const FullInverseMatrix = InverseMatrix(FullMatrix);
     305      double * FullMatrix = ReturnFullMatrixforSymmetric((*MolWalker)->cell_size);
     306      double * FullInverseMatrix = InverseMatrix(FullMatrix);
    303307      Log() << Verbose(2) << "Current molecule is " << *MolWalker << "." << endl;
    304308      atom *Walker = (*MolWalker)->start;
     
    324328        }
    325329      }
     330      Free(&FullMatrix);
     331      Free(&FullInverseMatrix);
    326332    }
    327333
  • molecuilder/src/boundary.cpp

    r543ce4 r4ef101  
    941941        }
    942942      }
     943  Free(&M);
     944  delete[](LCList);
     945  delete[](TesselStruct);
    943946  Log() << Verbose(0) << "End of FillBoxWithMolecule" << endl;
    944947
  • molecuilder/src/builder.cpp

    r543ce4 r4ef101  
    21422142        << MemoryUsageObserver::getInstance()->getUsedMemorySize() << endl;
    21432143      MemoryUsageObserver::getInstance()->purgeInstance();
     2144      logger::purgeInstance();
     2145      errorLogger::purgeInstance();
    21442146     return (j == 1 ? 0 : j);
    21452147    default:
     
    22472249    << MemoryUsageObserver::getInstance()->getUsedMemorySize() << endl;
    22482250  MemoryUsageObserver::purgeInstance();
     2251  logger::purgeInstance();
     2252  errorLogger::purgeInstance();
    22492253
    22502254  return (0);
  • molecuilder/src/molecule.cpp

    r543ce4 r4ef101  
    155155  Vector Orthovector1, Orthovector2;  // temporary vectors in coordination construction
    156156  Vector InBondvector;    // vector in direction of *Bond
    157   double *matrix;
     157  double *matrix = NULL;
    158158  bond *Binder = NULL;
    159159
     
    398398      break;
    399399  }
     400  Free(&matrix);
    400401
    401402//  Log() << Verbose(3) << "End of AddHydrogenReplacementAtom." << endl;
  • molecuilder/src/molecule_geometry.cpp

    r543ce4 r4ef101  
    3333  ActOnAllVectors( &Vector::WrapPeriodically, (const double *)M, (const double *)Minv);
    3434
    35   delete(M);
    36   delete(Minv);
     35  Free(&M);
     36  Free(&Minv);
    3737  delete(Center);
    3838  return status;
     
    5252  ActOnAllVectors( &Vector::WrapPeriodically, (const double *)M, (const double *)Minv);
    5353
    54   delete(M);
    55   delete(Minv);
     54  Free(&M);
     55  Free(&Minv);
    5656  return status;
    5757};
     
    233233  ActOnAllVectors( &Vector::WrapPeriodically, (const double *)M, (const double *)Minv);
    234234
    235   delete(M);
    236   delete(Minv);
     235  Free(&M);
     236  Free(&Minv);
    237237};
    238238
     
    253253  atom *Walker = start;
    254254  double *matrix = ReturnFullMatrixforSymmetric(cell_size);
     255  double *inversematrix = InverseMatrix(cell_size);
    255256  double tmp;
    256257  bool flag;
     
    266267#endif
    267268        Testvector.CopyVector(&Walker->x);
    268         Testvector.InverseMatrixMultiplication(matrix);
     269        Testvector.MatrixMultiplication(inversematrix);
    269270        Translationvector.Zero();
    270271        for (BondList::const_iterator Runner = Walker->ListOfBonds.begin(); Runner != Walker->ListOfBonds.end(); (++Runner)) {
     
    293294          if ((*Runner)->GetOtherAtom(Walker)->type->Z == 1) {
    294295            Testvector.CopyVector(&(*Runner)->GetOtherAtom(Walker)->x);
    295             Testvector.InverseMatrixMultiplication(matrix);
     296            Testvector.MatrixMultiplication(inversematrix);
    296297            Testvector.AddVector(&Translationvector);
    297298            Testvector.MatrixMultiplication(matrix);
     
    307308  } while (!flag);
    308309  Free(&matrix);
     310  Free(&inversematrix);
     311
    309312  Center.Scale(1./(double)AtomCount);
    310313};
Note: See TracChangeset for help on using the changeset viewer.