Index: /branches/eam_branch_20071023/psModules/src/objects/pmGrowthCurve.h
===================================================================
--- /branches/eam_branch_20071023/psModules/src/objects/pmGrowthCurve.h	(revision 15417)
+++ /branches/eam_branch_20071023/psModules/src/objects/pmGrowthCurve.h	(revision 15418)
@@ -4,6 +4,6 @@
  * @author EAM, IfA
  *
- * @version $Revision: 1.7 $ $Name: not supported by cvs2svn $
- * @date $Date: 2007-01-24 02:54:15 $
+ * @version $Revision: 1.7.22.1 $ $Name: not supported by cvs2svn $
+ * @date $Date: 2007-10-30 00:59:23 $
  * Copyright 2006 Institute for Astronomy, University of Hawaii
  */
@@ -27,4 +27,6 @@
 pmGrowthCurve;
 
+bool psMemCheckGrowthCurve(psPtr ptr);
+
 pmGrowthCurve *pmGrowthCurveAlloc (psF32 minRadius, psF32 maxRadius, psF32 refRadius);
 psF32 pmGrowthCurveCorrect (pmGrowthCurve *growth, psF32 radius);
Index: /branches/eam_branch_20071023/psModules/src/objects/pmModel.c
===================================================================
--- /branches/eam_branch_20071023/psModules/src/objects/pmModel.c	(revision 15417)
+++ /branches/eam_branch_20071023/psModules/src/objects/pmModel.c	(revision 15418)
@@ -6,6 +6,6 @@
  *  @author EAM, IfA
  *
- *  @version $Revision: 1.15.6.2 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2007-10-29 01:37:48 $
+ *  @version $Revision: 1.15.6.3 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2007-10-30 00:59:23 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -46,7 +46,4 @@
     psTrace("psModules.objects", 3, "---- %s() begin ----\n", __func__);
 
-    pmModel *tmp = (pmModel *) psAlloc(sizeof(pmModel));
-    psMemSetDeallocator(tmp, (psFreeFunc) modelFree);
-
     pmModelClass *class = pmModelClassSelect (type);
     if (class == NULL) {
@@ -54,4 +51,7 @@
         return(NULL);
     }
+
+    pmModel *tmp = (pmModel *) psAlloc(sizeof(pmModel));
+    psMemSetDeallocator(tmp, (psFreeFunc) modelFree);
 
     tmp->type = type;
@@ -89,7 +89,14 @@
 }
 
+bool psMemCheckModel(psPtr ptr)
+{
+    PS_ASSERT_PTR(ptr, false);
+    return ( psMemGetDeallocator(ptr) == (psFreeFunc) modelFree);
+}
+
 // copy model to a new structure
 pmModel *pmModelCopy (pmModel *model)
 {
+    PS_ASSERT_PTR_NON_NULL(model, NULL);
 
     pmModel *new = pmModelAlloc (model->type);
Index: /branches/eam_branch_20071023/psModules/src/objects/pmModel.h
===================================================================
--- /branches/eam_branch_20071023/psModules/src/objects/pmModel.h	(revision 15417)
+++ /branches/eam_branch_20071023/psModules/src/objects/pmModel.h	(revision 15418)
@@ -5,6 +5,6 @@
  * @author EAM, IfA
  *
- * @version $Revision: 1.12 $ $Name: not supported by cvs2svn $
- * @date $Date: 2007-08-24 00:11:02 $
+ * @version $Revision: 1.12.8.1 $ $Name: not supported by cvs2svn $
+ * @date $Date: 2007-10-30 00:59:23 $
  *
  * Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -122,4 +122,5 @@
  */
 pmModel *pmModelAlloc(pmModelType type);
+bool psMemCheckModel(psPtr ptr);
 
 // copy model to a new structure
Index: /branches/eam_branch_20071023/psModules/src/objects/pmModelClass.c
===================================================================
--- /branches/eam_branch_20071023/psModules/src/objects/pmModelClass.c	(revision 15417)
+++ /branches/eam_branch_20071023/psModules/src/objects/pmModelClass.c	(revision 15418)
@@ -6,6 +6,6 @@
  *  @author EAM, IfA
  *
- *  @version $Revision: 1.3 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2007-09-21 00:09:05 $
+ *  @version $Revision: 1.3.6.1 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2007-10-30 00:59:23 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -57,5 +57,4 @@
 static void ModelClassFree (pmModelClass *modelClass)
 {
-
     if (modelClass == NULL)
         return;
@@ -70,8 +69,14 @@
 }
 
+bool psMemCheckModelClass(psPtr ptr)
+{
+    PS_ASSERT_PTR(ptr, false);
+    return ( psMemGetDeallocator(ptr) == (psFreeFunc) ModelClassFree);
+}
+
 void pmModelClassAdd (pmModelClass *model)
 {
     if (models == NULL) {
-        pmModelClassInit ();
+        pmModelClassInit();
     }
 
@@ -85,6 +90,7 @@
 {
     // if we do not need to init, return false;
-    if (models != NULL)
+    if (models != NULL) {
         return false;
+    }
 
     int Nnew = sizeof (defaultModels) / sizeof (pmModelClass);
@@ -100,4 +106,8 @@
 pmModelClass *pmModelClassSelect (pmModelType type)
 {
+    if (models == NULL) {
+        pmModelClassInit();
+    }
+
     if ((type < 0) || (type >= Nmodels)) {
         psError(PS_ERR_UNKNOWN, true, "Undefined pmModelType");
@@ -111,4 +121,5 @@
     psFree (models);
     models = NULL;
+    Nmodels = 0;
     return;
 }
@@ -116,4 +127,8 @@
 psS32 pmModelClassParameterCount (pmModelType type)
 {
+    if (models == NULL) {
+        pmModelClassInit();
+    }
+
     if ((type < 0) || (type >= Nmodels)) {
         psError(PS_ERR_UNKNOWN, true, "Undefined pmModelType");
@@ -125,4 +140,8 @@
 psS32 pmModelClassGetType (char *name)
 {
+    if (models == NULL) {
+        pmModelClassInit();
+    }
+
     for (int i = 0; i < Nmodels; i++) {
         if (!strcmp(models[i].name, name)) {
@@ -135,4 +154,8 @@
 char *pmModelClassGetName (pmModelType type)
 {
+    if (models == NULL) {
+        pmModelClassInit();
+    }
+
     if ((type < 0) || (type >= Nmodels)) {
         psError(PS_ERR_UNKNOWN, true, "Undefined pmModelType");
Index: /branches/eam_branch_20071023/psModules/src/objects/pmModelClass.h
===================================================================
--- /branches/eam_branch_20071023/psModules/src/objects/pmModelClass.h	(revision 15417)
+++ /branches/eam_branch_20071023/psModules/src/objects/pmModelClass.h	(revision 15418)
@@ -21,6 +21,6 @@
  * @author EAM, IfA
  *
- * @version $Revision: 1.2 $ $Name: not supported by cvs2svn $
- * @date $Date: 2007-08-24 00:11:02 $
+ * @version $Revision: 1.2.8.1 $ $Name: not supported by cvs2svn $
+ * @date $Date: 2007-10-30 00:59:23 $
  * Copyright 2004 Maui High Performance Computing Center, University of Hawaii
  */
@@ -49,4 +49,7 @@
 pmModelClass *pmModelClassAlloc (int nModels);
 
+//
+bool psMemCheckModelClass(psPtr ptr);
+
 // initialize the internal (static) model class with the default models
 bool pmModelClassInit (void);
Index: /branches/eam_branch_20071023/psModules/src/objects/pmModelGroup.c
===================================================================
--- /branches/eam_branch_20071023/psModules/src/objects/pmModelGroup.c	(revision 15417)
+++ /branches/eam_branch_20071023/psModules/src/objects/pmModelGroup.c	(revision 15418)
@@ -6,6 +6,6 @@
  *  @author EAM, IfA
  *
- *  @version $Revision: 1.18 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2007-08-24 00:11:02 $
+ *  @version $Revision: 1.18.8.1 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2007-10-30 00:59:23 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -68,4 +68,10 @@
 }
 
+bool psMemCheckModelGroup(psPtr ptr)
+{
+    PS_ASSERT_PTR(ptr, false);
+    return ( psMemGetDeallocator(ptr) == (psFreeFunc) ModelGroupFree);
+}
+
 void pmModelGroupAdd (pmModelGroup *model)
 {
Index: /branches/eam_branch_20071023/psModules/src/objects/pmModelGroup.h
===================================================================
--- /branches/eam_branch_20071023/psModules/src/objects/pmModelGroup.h	(revision 15417)
+++ /branches/eam_branch_20071023/psModules/src/objects/pmModelGroup.h	(revision 15418)
@@ -21,6 +21,6 @@
  * @author EAM, IfA
  *
- * @version $Revision: 1.8 $ $Name: not supported by cvs2svn $
- * @date $Date: 2007-08-24 00:11:02 $
+ * @version $Revision: 1.8.8.1 $ $Name: not supported by cvs2svn $
+ * @date $Date: 2007-10-30 00:59:23 $
  * Copyright 2004 Maui High Performance Computing Center, University of Hawaii
  */
@@ -78,4 +78,6 @@
 pmModelGroup *pmModelGroupAlloc (int nModels);
 
+bool psMemCheckModelGroup(psPtr ptr);
+
 // initialize the internal (static) model group with the default models
 bool pmModelGroupInit (void);
Index: /branches/eam_branch_20071023/psModules/src/objects/pmModelUtils.c
===================================================================
--- /branches/eam_branch_20071023/psModules/src/objects/pmModelUtils.c	(revision 15417)
+++ /branches/eam_branch_20071023/psModules/src/objects/pmModelUtils.c	(revision 15418)
@@ -5,6 +5,6 @@
  *  @author EAM, IfA
  *
- *  @version $Revision: 1.3 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2007-09-21 00:04:30 $
+ *  @version $Revision: 1.3.6.1 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2007-10-30 00:59:23 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -36,4 +36,7 @@
 pmModel *pmModelFromPSF (pmModel *modelEXT, pmPSF *psf)
 {
+    PS_ASSERT_PTR_NON_NULL(psf, NULL);
+    PS_ASSERT_PTR_NON_NULL(modelEXT, NULL);
+
     // allocate a new pmModel to hold the PSF version
     pmModel *modelPSF = pmModelAlloc (psf->type);
@@ -53,7 +56,7 @@
 // instantiate a model for the PSF at this location with peak flux
 // NOTE: psf and (Xo,Yo) are defined wrt chip coordinates
-pmModel *pmModelFromPSFforXY (pmPSF *psf, float Xo, float Yo, float Io) {
-
-    assert (psf);
+pmModel *pmModelFromPSFforXY (pmPSF *psf, float Xo, float Yo, float Io)
+{
+    PS_ASSERT_PTR_NON_NULL(psf, NULL);
 
     // allocate a new pmModel to hold the PSF version
@@ -75,4 +78,6 @@
 // set this model to have the requested flux
 bool pmModelSetFlux (pmModel *model, float flux) {
+    PS_ASSERT_PTR_NON_NULL(model, NULL);
+    PS_ASSERT_PTR_NON_NULL(model->params, NULL);
 
     // set Io to be 1.0
Index: /branches/eam_branch_20071023/psModules/src/objects/pmPSF.c
===================================================================
--- /branches/eam_branch_20071023/psModules/src/objects/pmPSF.c	(revision 15417)
+++ /branches/eam_branch_20071023/psModules/src/objects/pmPSF.c	(revision 15418)
@@ -6,6 +6,6 @@
  *  @author EAM, IfA
  *
- *  @version $Revision: 1.32 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2007-09-29 00:15:32 $
+ *  @version $Revision: 1.32.2.1 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2007-10-30 00:59:23 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -81,7 +81,7 @@
 static void pmPSFFree (pmPSF *psf)
 {
-
-    if (psf == NULL)
+    if (psf == NULL) {
         return;
+    }
 
     psFree (psf->ChiTrend);
@@ -205,4 +205,12 @@
 }
 
+bool psMemCheckPSF(psPtr ptr)
+{
+    PS_ASSERT_PTR(ptr, false);
+    return ( psMemGetDeallocator(ptr) == (psFreeFunc) pmPSFFree);
+}
+
+
+
 // the PSF models the \sigma_{xy} variation of the elliptical contour as a function of position in the image with a
 // polynomial.  an individual object has a contour of the form (x^2/2sx^2) + (y^2/2sy^2) + sxy*x*y
@@ -217,4 +225,5 @@
 double pmPSF_SXYfromModel (psF32 *modelPar)
 {
+    PS_ASSERT_PTR_NON_NULL(modelPar, NAN);
 
     double SXX = modelPar[PM_PAR_SXX];
@@ -229,4 +238,5 @@
 double pmPSF_SXYtoModel (psF32 *fittedPar)
 {
+    PS_ASSERT_PTR_NON_NULL(fittedPar, NAN);
 
     double SXX = fittedPar[PM_PAR_SXX];
@@ -247,4 +257,6 @@
 bool pmPSF_FitToModel (psF32 *fittedPar, float minMinorAxis)
 {
+    PS_ASSERT_PTR_NON_NULL(fittedPar, false);
+
     psEllipsePol pol;
 
@@ -272,4 +284,7 @@
 psEllipsePol pmPSF_ModelToFit (psF32 *modelPar)
 {
+//   XXX: must assert non-NULL input parameter
+//    PS_ASSERT_PTR_NON_NULL(modelPar, NAN);
+
     psEllipseShape shape;
 
@@ -289,4 +304,6 @@
     psEllipseShape shape;
     psEllipseAxes axes;
+//   XXX: must assert non-NULL input parameter
+//    PS_ASSERT_PTR_NON_NULL(modelPar, axes);
 
     shape.sx  = modelPar[PM_PAR_SXX] / M_SQRT2;
@@ -310,4 +327,6 @@
 bool pmPSF_AxesToModel (psF32 *modelPar, psEllipseAxes axes)
 {
+    PS_ASSERT_PTR_NON_NULL(modelPar, false);
+
     if ((axes.major <= 0) || (axes.minor <= 0)) {
         modelPar[PM_PAR_SXX] = 0.0;
@@ -374,4 +393,6 @@
 bool pmGrowthCurveGenerate (pmReadout *readout, pmPSF *psf, bool ignore, psMaskType maskVal, psMaskType mark)
 {
+    PS_ASSERT_PTR_NON_NULL(readout, false);
+    PS_ASSERT_PTR_NON_NULL(readout->image, false);
 
     // bool status;
Index: /branches/eam_branch_20071023/psModules/src/objects/pmPSF.h
===================================================================
--- /branches/eam_branch_20071023/psModules/src/objects/pmPSF.h	(revision 15417)
+++ /branches/eam_branch_20071023/psModules/src/objects/pmPSF.h	(revision 15418)
@@ -6,6 +6,6 @@
  * @author EAM, IfA
  *
- * @version $Revision: 1.18 $ $Name: not supported by cvs2svn $
- * @date $Date: 2007-09-25 22:05:05 $
+ * @version $Revision: 1.18.2.1 $ $Name: not supported by cvs2svn $
+ * @date $Date: 2007-10-30 00:59:23 $
  * Copyright 2004 Maui High Performance Computing Center, University of Hawaii
  */
@@ -87,6 +87,8 @@
  *
  */
+
 pmPSF *pmPSFAlloc (pmPSFOptions *options);
-pmPSFOptions *pmPSFOptionsAlloc ();
+bool psMemCheckPSF(psPtr ptr);
+pmPSFOptions *pmPSFOptionsAlloc();
 
 double pmPSF_SXYfromModel (psF32 *modelPar);
Index: /branches/eam_branch_20071023/psModules/src/objects/pmPSF_IO.c
===================================================================
--- /branches/eam_branch_20071023/psModules/src/objects/pmPSF_IO.c	(revision 15417)
+++ /branches/eam_branch_20071023/psModules/src/objects/pmPSF_IO.c	(revision 15418)
@@ -6,6 +6,6 @@
  *  @author EAM, IfA
  *
- *  @version $Revision: 1.27.2.1 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2007-10-23 20:54:53 $
+ *  @version $Revision: 1.27.2.2 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2007-10-30 00:59:23 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -50,4 +50,9 @@
 bool pmPSFmodelCheckDataStatusForView (const pmFPAview *view, const pmFPAfile *file)
 {
+    PS_ASSERT_PTR_NON_NULL(view, false);
+    PS_ASSERT_PTR_NON_NULL(file, false);
+    PS_ASSERT_PTR_NON_NULL(file->fpa, false);
+    PS_ASSERT_PTR_NON_NULL(file->fpa->chips, false);
+
     pmFPA *fpa = file->fpa;
 
@@ -61,4 +66,6 @@
     }
     pmChip *chip = fpa->chips->data[view->chip];
+    PS_ASSERT_PTR_NON_NULL(chip, false);
+    PS_ASSERT_PTR_NON_NULL(chip->cells, false);
 
     if (view->cell == -1) {
@@ -75,4 +82,7 @@
 
 bool pmPSFmodelCheckDataStatusForFPA (const pmFPA *fpa) {
+
+    PS_ASSERT_PTR_NON_NULL(fpa, false);
+    PS_ASSERT_PTR_NON_NULL(fpa->chips, false);
 
     for (int i = 0; i < fpa->chips->n; i++) {
@@ -85,4 +95,5 @@
 
 bool pmPSFmodelCheckDataStatusForChip (const pmChip *chip) {
+    PS_ASSERT_PTR_NON_NULL(chip, false);
 
     bool status;
@@ -93,5 +104,10 @@
 }
 
-bool pmPSFmodelWriteForView (const pmFPAview *view, pmFPAfile *file, const pmConfig *config) {
+bool pmPSFmodelWriteForView (const pmFPAview *view, pmFPAfile *file, const pmConfig *config)
+{
+    PS_ASSERT_PTR_NON_NULL(view, false);
+    PS_ASSERT_PTR_NON_NULL(file, false);
+    PS_ASSERT_PTR_NON_NULL(file->fpa, false);
+    PS_ASSERT_PTR_NON_NULL(file->fpa->chips, false);
 
     pmFPA *fpa = file->fpa;
@@ -125,4 +141,7 @@
 bool pmPSFmodelWriteFPA (pmFPA *fpa, const pmFPAview *view, pmFPAfile *file, const pmConfig *config)
 {
+    PS_ASSERT_PTR_NON_NULL(view, false);
+    PS_ASSERT_PTR_NON_NULL(fpa, false);
+    PS_ASSERT_PTR_NON_NULL(fpa->chips, false);
     pmFPAview *thisView = pmFPAviewAlloc (view->nRows);
     *thisView = *view;
@@ -144,4 +163,7 @@
 bool pmPSFmodelWriteChip (pmChip *chip, const pmFPAview *view, pmFPAfile *file, const pmConfig *config)
 {
+    PS_ASSERT_PTR_NON_NULL(view, false);
+    PS_ASSERT_PTR_NON_NULL(chip, false);
+
     if (!pmPSFmodelWrite (chip->analysis, view, file, config)) {
         psError(PS_ERR_IO, false, "Failed to write PSF for chip");
@@ -161,4 +183,7 @@
 bool pmPSFmodelWrite (psMetadata *analysis, const pmFPAview *view, pmFPAfile *file, const pmConfig *config)
 {
+    PS_ASSERT_PTR_NON_NULL(view, false);
+    PS_ASSERT_PTR_NON_NULL(file, false);
+    PS_ASSERT_PTR_NON_NULL(file->fpa, false);
     bool status;
     pmHDU *hdu;
@@ -449,6 +474,9 @@
 
 // if this file needs to have a PHU written out, write one
-bool pmPSFmodelWritePHU (const pmFPAview *view, pmFPAfile *file, const pmConfig *config) {
-
+bool pmPSFmodelWritePHU (const pmFPAview *view, pmFPAfile *file, const pmConfig *config)
+{
+    PS_ASSERT_PTR_NON_NULL(view, false);
+    PS_ASSERT_PTR_NON_NULL(file, false);
+    PS_ASSERT_PTR_NON_NULL(file->fpa, false);
     // not needed if already written
     if (file->wrote_phu) return true;
@@ -493,4 +521,7 @@
 bool pmPSFmodelReadForView (const pmFPAview *view, pmFPAfile *file, const pmConfig *config)
 {
+    PS_ASSERT_PTR_NON_NULL(view, false);
+    PS_ASSERT_PTR_NON_NULL(file, false);
+    PS_ASSERT_PTR_NON_NULL(file->fpa, false);
 
     pmFPA *fpa = file->fpa;
@@ -516,4 +547,8 @@
 bool pmPSFmodelReadFPA (pmFPA *fpa, const pmFPAview *view, pmFPAfile *file, const pmConfig *config)
 {
+    PS_ASSERT_PTR_NON_NULL(view, false);
+    PS_ASSERT_PTR_NON_NULL(file, false);
+    PS_ASSERT_PTR_NON_NULL(file->fpa, false);
+
     bool success = true;                // Was everything successful?
     for (int i = 0; i < fpa->chips->n; i++) {
@@ -527,4 +562,8 @@
 bool pmPSFmodelReadChip (pmChip *chip, const pmFPAview *view, pmFPAfile *file, const pmConfig *config)
 {
+    PS_ASSERT_PTR_NON_NULL(view, false);
+    PS_ASSERT_PTR_NON_NULL(file, false);
+    PS_ASSERT_PTR_NON_NULL(file->fpa, false);
+
     if (!pmPSFmodelRead (chip->analysis, view, file, config)) {
         psError(PS_ERR_IO, false, "Failed to write PSF for chip");
@@ -538,4 +577,8 @@
 bool pmPSFmodelRead (psMetadata *analysis, const pmFPAview *view, pmFPAfile *file, const pmConfig *config)
 {
+    PS_ASSERT_PTR_NON_NULL(view, false);
+    PS_ASSERT_PTR_NON_NULL(file, false);
+    PS_ASSERT_PTR_NON_NULL(file->fpa, false);
+
     bool status;
     char *rule = NULL;
@@ -762,4 +805,3 @@
 }
 
-// create a psMetadata representation (human-readable) of a psf model
 // XXX pmPSF to/from Metadata functions were defined for 1.22 and earlier, but were dropped
Index: /branches/eam_branch_20071023/psModules/src/objects/pmPSFtry.c
===================================================================
--- /branches/eam_branch_20071023/psModules/src/objects/pmPSFtry.c	(revision 15417)
+++ /branches/eam_branch_20071023/psModules/src/objects/pmPSFtry.c	(revision 15418)
@@ -5,6 +5,6 @@
  *  @author EAM, IfA
  *
- *  @version $Revision: 1.49 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2007-10-09 19:26:25 $
+ *  @version $Revision: 1.49.2.1 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2007-10-30 00:59:23 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -81,4 +81,11 @@
 }
 
+bool psMemCheckPSFtry(psPtr ptr)
+{
+    PS_ASSERT_PTR(ptr, false);
+    return ( psMemGetDeallocator(ptr) == (psFreeFunc) pmPSFtryFree);
+}
+
+
 // build a pmPSFtry for the given model:
 // - fit each source with the free-floating model
@@ -249,4 +256,7 @@
 bool pmPSFtryMetric (pmPSFtry *psfTry, float RADIUS)
 {
+    PS_ASSERT_PTR_NON_NULL(psfTry, false);
+    PS_ASSERT_PTR_NON_NULL(psfTry->sources, false);
+
     // the measured (aperture - fit) magnitudes (dA == psfTry->metric)
     //   depend on both the true ap-fit (dAo) and the bias in the sky measurement:
@@ -346,4 +356,7 @@
 bool pmPSFFromPSFtry (pmPSFtry *psfTry)
 {
+    PS_ASSERT_PTR_NON_NULL(psfTry, false);
+    PS_ASSERT_PTR_NON_NULL(psfTry->sources, false);
+
     pmPSF *psf = psfTry->psf;
 
Index: /branches/eam_branch_20071023/psModules/src/objects/pmPSFtry.h
===================================================================
--- /branches/eam_branch_20071023/psModules/src/objects/pmPSFtry.h	(revision 15417)
+++ /branches/eam_branch_20071023/psModules/src/objects/pmPSFtry.h	(revision 15418)
@@ -6,6 +6,6 @@
  * @author EAM, IfA
  *
- * @version $Revision: 1.16 $ $Name: not supported by cvs2svn $
- * @date $Date: 2007-09-25 22:05:05 $
+ * @version $Revision: 1.16.2.1 $ $Name: not supported by cvs2svn $
+ * @date $Date: 2007-10-30 00:59:23 $
  * Copyright 2004 Maui High Performance Computing Center, University of Hawaii
  */
@@ -78,5 +78,7 @@
  *
  */
+
 pmPSFtry *pmPSFtryAlloc (psArray *sources, pmPSFOptions *options);
+bool psMemCheckPSFtry(psPtr ptr);
 
 /** pmPSFtryModel()
Index: /branches/eam_branch_20071023/psModules/src/objects/pmPeaks.c
===================================================================
--- /branches/eam_branch_20071023/psModules/src/objects/pmPeaks.c	(revision 15417)
+++ /branches/eam_branch_20071023/psModules/src/objects/pmPeaks.c	(revision 15418)
@@ -6,6 +6,6 @@
  *  @author EAM, IfA: significant modifications.
  *
- *  @version $Revision: 1.17 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2007-09-27 03:35:29 $
+ *  @version $Revision: 1.17.2.1 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2007-10-30 00:59:23 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -150,4 +150,5 @@
 }
 
+// XXX: Get rid of this:
 bool pmPeakTest(const psPtr ptr)
 {
@@ -155,5 +156,13 @@
 }
 
+bool psMemCheckPeak(psPtr ptr)
+{
+    PS_ASSERT_PTR(ptr, false);
+    return ( psMemGetDeallocator(ptr) == (psFreeFunc) peakFree);
+}
+
+
 // psSort comparison function for peaks
+// XXX: Add error-checking for NULL args
 int pmPeaksCompareAscend (const void **a, const void **b)
 {
@@ -177,4 +186,5 @@
 
 // psSort comparison function for peaks
+// XXX: Add error-checking for NULL args
 int pmPeaksCompareDescend (const void **a, const void **b)
 {
Index: /branches/eam_branch_20071023/psModules/src/objects/pmPeaks.h
===================================================================
--- /branches/eam_branch_20071023/psModules/src/objects/pmPeaks.h	(revision 15417)
+++ /branches/eam_branch_20071023/psModules/src/objects/pmPeaks.h	(revision 15418)
@@ -10,6 +10,6 @@
  * @author GLG, MHPCC
  *
- * @version $Revision: 1.8 $ $Name: not supported by cvs2svn $
- * @date $Date: 2007-09-27 03:35:29 $
+ * @version $Revision: 1.8.2.1 $ $Name: not supported by cvs2svn $
+ * @date $Date: 2007-10-30 00:59:23 $
  * Copyright 2004 Maui High Performance Computing Center, University of Hawaii
  */
@@ -75,4 +75,5 @@
 
 bool pmPeakTest(const psPtr ptr);
+bool psMemCheckPeak(psPtr ptr);
 
 /** pmPeaksInVector()
Index: /branches/eam_branch_20071023/psModules/src/objects/pmResiduals.c
===================================================================
--- /branches/eam_branch_20071023/psModules/src/objects/pmResiduals.c	(revision 15417)
+++ /branches/eam_branch_20071023/psModules/src/objects/pmResiduals.c	(revision 15418)
@@ -4,6 +4,6 @@
  *
  * @author EAM, IfA
- * @version $Revision: 1.2 $ $Name: not supported by cvs2svn $
- * @date $Date: 2007-04-21 19:47:14 $
+ * @version $Revision: 1.2.16.1 $ $Name: not supported by cvs2svn $
+ * @date $Date: 2007-10-30 00:59:23 $
  * Copyright 2004 IfA, University of Hawaii
  */
@@ -51,2 +51,9 @@
     return resid;
 }
+
+bool psMemCheckResiduals(psPtr ptr)
+{
+    PS_ASSERT_PTR(ptr, false);
+    return ( psMemGetDeallocator(ptr) == (psFreeFunc) pmResidualsFree);
+}
+
Index: /branches/eam_branch_20071023/psModules/src/objects/pmResiduals.h
===================================================================
--- /branches/eam_branch_20071023/psModules/src/objects/pmResiduals.h	(revision 15417)
+++ /branches/eam_branch_20071023/psModules/src/objects/pmResiduals.h	(revision 15418)
@@ -4,6 +4,6 @@
  *
  * @author EAM, IfA
- * @version $Revision: 1.2 $ $Name: not supported by cvs2svn $
- * @date $Date: 2007-04-21 19:47:14 $
+ * @version $Revision: 1.2.16.1 $ $Name: not supported by cvs2svn $
+ * @date $Date: 2007-10-30 00:59:23 $
  * Copyright 2004 IfA, University of Hawaii
  */
@@ -29,4 +29,5 @@
 
 pmResiduals *pmResidualsAlloc (int xSize, int ySize, int xBin, int yBin);
+bool psMemCheckResiduals(psPtr ptr);
 
 /// @}
Index: /branches/eam_branch_20071023/psModules/src/objects/pmSource.c
===================================================================
--- /branches/eam_branch_20071023/psModules/src/objects/pmSource.c	(revision 15417)
+++ /branches/eam_branch_20071023/psModules/src/objects/pmSource.c	(revision 15418)
@@ -6,6 +6,6 @@
  *  @author EAM, IfA: significant modifications.
  *
- *  @version $Revision: 1.40 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2007-10-06 02:29:47 $
+ *  @version $Revision: 1.40.2.1 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2007-10-30 00:59:23 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -77,8 +77,15 @@
 }
 
+bool psMemCheckSource(psPtr ptr)
+{
+    PS_ASSERT_PTR(ptr, false);
+    return ( psMemGetDeallocator(ptr) == (psFreeFunc) sourceFree);
+}
+
 /******************************************************************************
 pmSourceAlloc(): Allocate the pmSource structure and initialize its members
 to NULL.
 *****************************************************************************/
+
 pmSource *pmSourceAlloc()
 {
@@ -132,4 +139,7 @@
 pmSource *pmSourceCopy(pmSource *in)
 {
+    if (in == NULL) {
+        return(NULL);
+    }
     // this copy is used to allow multiple fit attempts on the
     // same object.  the pixels, weight, and mask arrays all point to
@@ -139,19 +149,23 @@
 
     // this is actually the same peak as the original, is this the correct way to handle this?
-    source->peak = pmPeakAlloc (in->peak->x, in->peak->y, in->peak->value, in->peak->type);
-    source->peak->xf = in->peak->xf;
-    source->peak->yf = in->peak->yf;
-    source->peak->flux = in->peak->flux;
-    source->peak->SN = in->peak->SN;
+    if (in->peak != NULL) {
+        source->peak = pmPeakAlloc (in->peak->x, in->peak->y, in->peak->value, in->peak->type);
+        source->peak->xf = in->peak->xf;
+        source->peak->yf = in->peak->yf;
+        source->peak->flux = in->peak->flux;
+        source->peak->SN = in->peak->SN;
+    }
 
     // copy the values in the moments structure
-    source->moments  =  pmMomentsAlloc();
-    *source->moments = *in->moments;
+    if (in->moments != NULL) {
+        source->moments  =  pmMomentsAlloc();
+        *source->moments = *in->moments;
+    }
 
     // These images are all views to the parent.
     // We want a new view, but pointing at the same pixels.
-    source->pixels   = psImageCopyView (NULL, in->pixels);
-    source->weight   = psImageCopyView (NULL, in->weight);
-    source->maskView = psImageCopyView (NULL, in->maskView);
+    source->pixels   = psImageCopyView(NULL, in->pixels);
+    source->weight   = psImageCopyView(NULL, in->weight);
+    source->maskView = psImageCopyView(NULL, in->maskView);
 
     // the maskObj is a unique mask array; create a new mask image
@@ -173,4 +187,9 @@
                           psF32 Radius)
 {
+    PS_ASSERT_PTR_NON_NULL(mySource, false);
+    PS_ASSERT_PTR_NON_NULL(readout, false);
+    PS_ASSERT_PTR_NON_NULL(readout->image, false);
+    PS_ASSERT_INT_POSITIVE(Radius, false);
+
     psRegion srcRegion;
 
@@ -200,9 +219,11 @@
                             psF32 Radius)
 {
+    PS_ASSERT_PTR_NON_NULL(mySource, false);
+    PS_ASSERT_PTR_NON_NULL(readout, false);
+    PS_ASSERT_PTR_NON_NULL(readout->image, false);
+    PS_ASSERT_INT_POSITIVE(Radius, false);
+
     bool extend;
     psRegion newRegion;
-
-    if (Radius == 0)
-        return false;
 
     // check to see if new region is completely contained within old region
@@ -814,6 +835,8 @@
 
 // should we call pmSourceCacheModel if it does not exist?
-bool pmSourceOp (pmSource *source, pmModelOpMode mode, bool add, psMaskType maskVal, int dx, int dy) {
-
+bool pmSourceOp (pmSource *source, pmModelOpMode mode, bool add, 
+                 psMaskType maskVal, int dx, int dy)
+{
+    PS_ASSERT_PTR_NON_NULL(source, false);
     bool status;
 
@@ -904,4 +927,5 @@
 pmModel *pmSourceGetModel (bool *isPSF, const pmSource *source)
 {
+    PS_ASSERT_PTR_NON_NULL(source, NULL);
 
     pmModel *model;
Index: /branches/eam_branch_20071023/psModules/src/objects/pmSource.h
===================================================================
--- /branches/eam_branch_20071023/psModules/src/objects/pmSource.h	(revision 15417)
+++ /branches/eam_branch_20071023/psModules/src/objects/pmSource.h	(revision 15418)
@@ -3,6 +3,6 @@
  * @author EAM, IfA; GLG, MHPCC
  *
- * @version $Revision: 1.18.2.2 $ $Name: not supported by cvs2svn $
- * @date $Date: 2007-10-29 01:37:48 $
+ * @version $Revision: 1.18.2.3 $ $Name: not supported by cvs2svn $
+ * @date $Date: 2007-10-30 00:59:23 $
  * Copyright 2004 Maui High Performance Computing Center, University of Hawaii
  */
@@ -114,4 +114,7 @@
  *
  */
+
+bool psMemCheckSource(psPtr ptr);
+
 pmSource  *pmSourceCopy(pmSource *source);
 
@@ -181,8 +184,7 @@
  */
 pmPSFClump pmSourcePSFClump(
-    psArray *source,   ///< The input pmSource
-    psMetadata *metadata  ///< Contains classification parameters
-);
-
+    psArray *source,                    ///< The input pmSource
+    psMetadata *metadata                ///< Contains classification parameters
+);
 
 /** pmSourceRoughClass()
@@ -197,7 +199,7 @@
  */
 bool pmSourceRoughClass(
-    psArray *source,   ///< The input pmSource
-    psMetadata *metadata,  ///< Contains classification parameters
-    pmPSFClump clump,   ///< Statistics about the PSF clump
+    psArray *source,                    ///< The input pmSource
+    psMetadata *metadata,               ///< Contains classification parameters
+    pmPSFClump clump,                   ///< Statistics about the PSF clump
     psMaskType maskSat                  ///< Mask value for saturated pixels
 );
Index: /branches/eam_branch_20071023/psModules/src/objects/pmSourceContour.c
===================================================================
--- /branches/eam_branch_20071023/psModules/src/objects/pmSourceContour.c	(revision 15417)
+++ /branches/eam_branch_20071023/psModules/src/objects/pmSourceContour.c	(revision 15418)
@@ -6,6 +6,6 @@
  *  @author EAM, IfA: significant modifications.
  *
- *  @version $Revision: 1.9 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2007-09-21 00:09:05 $
+ *  @version $Revision: 1.9.6.1 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2007-10-30 00:59:23 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -220,4 +220,5 @@
 psArray *pmSourceContour (psImage *image, int xc, int yc, float threshold)
 {
+    PS_ASSERT_PTR_NON_NULL(image, NULL);
 
     int xR, yR, x0, x1, x0s, x1s;
Index: /branches/eam_branch_20071023/psModules/src/objects/pmSourceFitSet.c
===================================================================
--- /branches/eam_branch_20071023/psModules/src/objects/pmSourceFitSet.c	(revision 15417)
+++ /branches/eam_branch_20071023/psModules/src/objects/pmSourceFitSet.c	(revision 15418)
@@ -6,6 +6,6 @@
  *  @author GLG, MHPCC
  *
- *  @version $Revision: 1.7 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2007-09-28 00:39:41 $
+ *  @version $Revision: 1.7.2.1 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2007-10-30 00:59:23 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -79,8 +79,16 @@
 }
 
+bool psMemCheckSourceFitSetData(psPtr ptr)
+{
+    PS_ASSERT_PTR(ptr, false);
+    return ( psMemGetDeallocator(ptr) == (psFreeFunc) pmSourceFitSetDataFree);
+}
+
+
 // this function is called with the full set of parameters and the beta values in a single vector
-bool pmSourceFitSetCheckLimits (psMinConstraintMode mode, int nParam, float *params, float *betas)
-{
-    assert (thisSet);
+bool pmSourceFitSetCheckLimits (psMinConstraintMode mode, int nParam, float *params,
+                                float *betas)
+{
+    PS_ASSERT_PTR_NON_NULL(thisSet, false);
 
     // nParam is the parameter in the full sequence.  determine which single model this comes from
@@ -109,7 +117,9 @@
 
 // merge parameters from FitSet models into single param and deriv vectors
-bool pmSourceFitSetJoin (psVector *deriv, psVector *param, pmSourceFitSetData *set) {
-
-    assert (set);
+bool pmSourceFitSetJoin (psVector *deriv, psVector *param, pmSourceFitSetData *set)
+{
+    PS_ASSERT_PTR_NON_NULL(set, false);
+    PS_ASSERT_PTR_NON_NULL(param, false);
+
     assert (set->paramSet->n == set->derivSet->n);
 
@@ -138,6 +148,7 @@
 // distribute parameters from single param and deriv vectors into FitSet models
 bool pmSourceFitSetSplit (pmSourceFitSetData *set, const psVector *deriv, const psVector *param) {
-
-    assert (set);
+    PS_ASSERT_PTR_NON_NULL(set, false);
+    PS_ASSERT_PTR_NON_NULL(param, false);
+
     assert (set->paramSet->n == set->derivSet->n);
 
@@ -159,9 +170,10 @@
 }
 
-bool pmSourceFitSetValues (pmSourceFitSetData *set, const psVector *dparam, const psVector *param, pmSource *source, psMinimization *myMin, int nPix, bool fitStatus) {
-
+bool pmSourceFitSetValues (pmSourceFitSetData *set, const psVector *dparam, 
+                           const psVector *param, pmSource *source,
+                           psMinimization *myMin, int nPix, bool fitStatus)
+{
+    PS_ASSERT_PTR_NON_NULL(set, false);
     bool onPic = true;
-
-    assert (set);
 
     int n = 0;
@@ -203,8 +215,7 @@
 psF32 pmSourceFitSetFunction(psVector *deriv, const psVector *param, const psVector *x)
 {
+    PS_ASSERT_PTR_NON_NULL(thisSet, NAN);
     float chisqSum = 0.0;
     float chisqOne = 0.0;
-
-    assert (thisSet);
     pmSourceFitSetSplit (thisSet, deriv, param);
 
@@ -225,5 +236,9 @@
 
 // XXX allow the mode to be a function of the object (eg, S/N)
-bool pmSourceFitSetMasks (psMinConstraint *constraint, pmSourceFitSetData *set, pmSourceFitMode mode) {
+bool pmSourceFitSetMasks (psMinConstraint *constraint, pmSourceFitSetData *set,
+                          pmSourceFitMode mode)
+{
+    PS_ASSERT_PTR_NON_NULL(set, false);
+    PS_ASSERT_PTR_NON_NULL(constraint, false);
 
     // unmask everyone
Index: /branches/eam_branch_20071023/psModules/src/objects/pmSourceFitSet.h
===================================================================
--- /branches/eam_branch_20071023/psModules/src/objects/pmSourceFitSet.h	(revision 15417)
+++ /branches/eam_branch_20071023/psModules/src/objects/pmSourceFitSet.h	(revision 15418)
@@ -3,6 +3,6 @@
  * @author EAM, IfA; GLG, MHPCC
  *
- * @version $Revision: 1.5 $ $Name: not supported by cvs2svn $
- * @date $Date: 2007-09-28 00:39:47 $
+ * @version $Revision: 1.5.2.1 $ $Name: not supported by cvs2svn $
+ * @date $Date: 2007-10-30 00:59:23 $
  * Copyright 2004 Maui High Performance Computing Center, University of Hawaii
  */
@@ -23,4 +23,5 @@
 // initialize data for a group of object models
 pmSourceFitSetData *pmSourceFitSetDataAlloc (psArray *modelSet);
+bool psMemCheckSourceFitSetData(psPtr ptr);
 
 // function used to set limits for a group of models
Index: /branches/eam_branch_20071023/psModules/src/objects/pmSourceIO.c
===================================================================
--- /branches/eam_branch_20071023/psModules/src/objects/pmSourceIO.c	(revision 15417)
+++ /branches/eam_branch_20071023/psModules/src/objects/pmSourceIO.c	(revision 15418)
@@ -3,6 +3,6 @@
  *  @author EAM, IfA
  *
- *  @version $Revision: 1.52.2.2 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2007-10-29 01:37:48 $
+ *  @version $Revision: 1.52.2.3 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2007-10-30 00:59:23 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -47,4 +47,6 @@
 int pmSourceGetDophotType (pmSource *source)
 {
+    PS_ASSERT_PTR_NON_NULL(source, -1);
+
     switch (source->type) {
 
@@ -74,4 +76,6 @@
 bool pmSourceSetDophotType (pmSource *source, int type)
 {
+    PS_ASSERT_PTR_NON_NULL(source, false);
+
     if (type == 4) {
         source->mode |= PM_SOURCE_MODE_FAIL;
@@ -106,4 +110,7 @@
 bool pmFPAviewWriteObjects (const pmFPAview *view, pmFPAfile *file, const pmConfig *config)
 {
+    PS_ASSERT_PTR_NON_NULL(view, false);
+    PS_ASSERT_PTR_NON_NULL(file, false);
+    PS_ASSERT_PTR_NON_NULL(file->fpa, false);
 
     pmFPA *fpa = file->fpa;
@@ -165,4 +172,8 @@
 bool pmFPAWriteObjects (pmFPA *fpa, const pmFPAview *view, pmFPAfile *file, const pmConfig *config)
 {
+    PS_ASSERT_PTR_NON_NULL(view, false);
+    PS_ASSERT_PTR_NON_NULL(fpa, false);
+    PS_ASSERT_PTR_NON_NULL(fpa->chips, false);
+
     pmFPAview *thisView = pmFPAviewAlloc (view->nRows);
     *thisView = *view;
@@ -184,4 +195,8 @@
 bool pmChipWriteObjects (pmChip *chip, const pmFPAview *view, pmFPAfile *file, const pmConfig *config)
 {
+    PS_ASSERT_PTR_NON_NULL(chip, false);
+    PS_ASSERT_PTR_NON_NULL(chip->cells, false);
+    PS_ASSERT_PTR_NON_NULL(view, false);
+
     pmFPAview *thisView = pmFPAviewAlloc (view->nRows);
     *thisView = *view;
@@ -203,4 +218,8 @@
 bool pmCellWriteObjects (pmCell *cell, const pmFPAview *view, pmFPAfile *file, const pmConfig *config)
 {
+    PS_ASSERT_PTR_NON_NULL(cell, false);
+    PS_ASSERT_PTR_NON_NULL(cell->readouts, false);
+    PS_ASSERT_PTR_NON_NULL(view, false);
+
     pmFPAview *thisView = pmFPAviewAlloc (view->nRows);
     *thisView = *view;
@@ -222,4 +241,8 @@
 bool pmReadoutWriteObjects (pmReadout *readout, const pmFPAview *view, pmFPAfile *file, const pmConfig *config)
 {
+    PS_ASSERT_PTR_NON_NULL(readout, false);
+    PS_ASSERT_PTR_NON_NULL(view, false);
+    PS_ASSERT_PTR_NON_NULL(file, false);
+    PS_ASSERT_PTR_NON_NULL(file->fpa, false);
 
     bool status;
@@ -418,5 +441,8 @@
 
 // if this file needs to have a PHU written out, write one
-bool pmSource_CMF_WritePHU (const pmFPAview *view, pmFPAfile *file, const pmConfig *config) {
+bool pmSource_CMF_WritePHU (const pmFPAview *view, pmFPAfile *file, const pmConfig *config)
+{
+    PS_ASSERT_PTR_NON_NULL(view, false);
+    PS_ASSERT_PTR_NON_NULL(file, false);
 
     bool status;
@@ -527,4 +553,8 @@
 bool pmFPAviewReadObjects (const pmFPAview *view, pmFPAfile *file, const pmConfig *config)
 {
+    PS_ASSERT_PTR_NON_NULL(view, false);
+    PS_ASSERT_PTR_NON_NULL(file, false);
+    PS_ASSERT_PTR_NON_NULL(file->fpa, false);
+
     pmFPA *fpa = file->fpa;
 
@@ -566,4 +596,9 @@
 bool pmFPAReadObjects (pmFPA *fpa, const pmFPAview *view, pmFPAfile *file, const pmConfig *config)
 {
+    PS_ASSERT_PTR_NON_NULL(view, false);
+    PS_ASSERT_PTR_NON_NULL(file, false);
+    PS_ASSERT_PTR_NON_NULL(file->fpa, false);
+    PS_ASSERT_PTR_NON_NULL(file->fpa->chips, false);
+
     pmFPAview *thisView = pmFPAviewAlloc (view->nRows);
     *thisView = *view;
@@ -587,4 +622,8 @@
 bool pmChipReadObjects (pmChip *chip, const pmFPAview *view, pmFPAfile *file, const pmConfig *config)
 {
+    PS_ASSERT_PTR_NON_NULL(view, false);
+    PS_ASSERT_PTR_NON_NULL(chip, false);
+    PS_ASSERT_PTR_NON_NULL(chip->cells, false);
+
     pmFPAview *thisView = pmFPAviewAlloc (view->nRows);
     *thisView = *view;
@@ -611,4 +650,8 @@
 bool pmCellReadObjects (pmCell *cell, const pmFPAview *view, pmFPAfile *file, const pmConfig *config)
 {
+    PS_ASSERT_PTR_NON_NULL(view, false);
+    PS_ASSERT_PTR_NON_NULL(cell, false);
+    PS_ASSERT_PTR_NON_NULL(cell->readouts, false);
+
     pmFPAview *thisView = pmFPAviewAlloc (view->nRows);
     *thisView = *view;
@@ -652,4 +695,6 @@
 bool pmReadoutReadObjects (pmReadout *readout, const pmFPAview *view, pmFPAfile *file, const pmConfig *config)
 {
+    PS_ASSERT_PTR_NON_NULL(view, false);
+    PS_ASSERT_PTR_NON_NULL(file, false);
 
     bool status;
@@ -789,4 +834,8 @@
 bool pmFPAviewCheckDataStatusForSources (const pmFPAview *view, const pmFPAfile *file)
 {
+    PS_ASSERT_PTR_NON_NULL(view, false);
+    PS_ASSERT_PTR_NON_NULL(file, false);
+    PS_ASSERT_PTR_NON_NULL(file->fpa, false);
+
     pmFPA *fpa = file->fpa;
 
@@ -826,5 +875,8 @@
 }
 
-bool pmFPACheckDataStatusForSources (const pmFPA *fpa) {
+bool pmFPACheckDataStatusForSources (const pmFPA *fpa)
+{
+    PS_ASSERT_PTR_NON_NULL(fpa, false);
+    PS_ASSERT_PTR_NON_NULL(fpa->chips, false);
 
     for (int i = 0; i < fpa->chips->n; i++) {
@@ -836,5 +888,8 @@
 }
 
-bool pmChipCheckDataStatusForSources (const pmChip *chip) {
+bool pmChipCheckDataStatusForSources (const pmChip *chip)
+{
+    PS_ASSERT_PTR_NON_NULL(chip, false);
+    PS_ASSERT_PTR_NON_NULL(chip->cells, false);
 
     for (int i = 0; i < chip->cells->n; i++) {
@@ -846,5 +901,8 @@
 }
 
-bool pmCellCheckDataStatusForSources (const pmCell *cell) {
+bool pmCellCheckDataStatusForSources (const pmCell *cell)
+{
+    PS_ASSERT_PTR_NON_NULL(cell, false);
+    PS_ASSERT_PTR_NON_NULL(cell->readouts, false);
 
     for (int i = 0; i < cell->readouts->n; i++) {
@@ -856,5 +914,7 @@
 }
 
-bool pmReadoutCheckDataStatusForSources (const pmReadout *readout) {
+bool pmReadoutCheckDataStatusForSources (const pmReadout *readout)
+{
+    PS_ASSERT_PTR_NON_NULL(readout, false);
 
     bool status;
Index: /branches/eam_branch_20071023/psModules/src/objects/pmSourceIO_CMP.c
===================================================================
--- /branches/eam_branch_20071023/psModules/src/objects/pmSourceIO_CMP.c	(revision 15417)
+++ /branches/eam_branch_20071023/psModules/src/objects/pmSourceIO_CMP.c	(revision 15418)
@@ -3,6 +3,6 @@
  *  @author EAM, IfA
  *
- *  @version $Revision: 1.31 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2007-09-21 00:09:05 $
+ *  @version $Revision: 1.31.6.1 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2007-10-30 00:59:23 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -48,4 +48,7 @@
 bool pmSourcesWriteCMP (psArray *sources, char *filename, psMetadata *header)
 {
+    PS_ASSERT_PTR_NON_NULL(sources, false);
+    PS_ASSERT_PTR_NON_NULL(filename, false);
+    PS_ASSERT_PTR_NON_NULL(header, false);
 
     int i, type;
@@ -58,11 +61,13 @@
     // find config information for output header
     float ZERO_POINT = psMetadataLookupF32 (&status, header, "ZERO_PT");
-    if (!status)
+    if (!status) {
         ZERO_POINT = 25.0;
+    }
 
     // MEF elements have XTENSION, not SIMPLE: remove this (replace with SIMPLE)
     psMetadataLookupStr (&status, header, "XTENSION");
-    if (status)
+    if (status) {
         psMetadataRemoveKey (header, "XTENSION");
+    }
 
     // create file, write-out header
@@ -148,4 +153,6 @@
 psArray *pmSourcesReadCMP (char *filename, psMetadata *header)
 {
+    PS_ASSERT_PTR_NON_NULL(filename, false);
+    PS_ASSERT_PTR_NON_NULL(header, false);
 
     bool status;
Index: /branches/eam_branch_20071023/psModules/src/objects/pmSourceIO_OBJ.c
===================================================================
--- /branches/eam_branch_20071023/psModules/src/objects/pmSourceIO_OBJ.c	(revision 15417)
+++ /branches/eam_branch_20071023/psModules/src/objects/pmSourceIO_OBJ.c	(revision 15418)
@@ -3,6 +3,6 @@
  *  @author EAM, IfA
  *
- *  @version $Revision: 1.15 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2007-09-21 00:09:05 $
+ *  @version $Revision: 1.15.6.1 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2007-10-30 00:59:23 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -42,4 +42,6 @@
 bool pmSourcesWriteOBJ (psArray *sources, char *filename)
 {
+    PS_ASSERT_PTR_NON_NULL(sources, false);
+    PS_ASSERT_PTR_NON_NULL(filename, false);
 
     int type;
Index: /branches/eam_branch_20071023/psModules/src/objects/pmSourceIO_PS1_DEV_0.c
===================================================================
--- /branches/eam_branch_20071023/psModules/src/objects/pmSourceIO_PS1_DEV_0.c	(revision 15417)
+++ /branches/eam_branch_20071023/psModules/src/objects/pmSourceIO_PS1_DEV_0.c	(revision 15418)
@@ -3,6 +3,6 @@
  *  @author EAM, IfA
  *
- *  @version $Revision: 1.13 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2007-09-21 00:09:05 $
+ *  @version $Revision: 1.13.6.1 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2007-10-30 00:59:23 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -46,7 +46,11 @@
 // values derived in the DVO database.
 // XXX how do I generate the source tables which I need to send to PSPS?
-
-bool pmSourcesWrite_PS1_DEV_0 (psFits *fits, psArray *sources, psMetadata *imageHeader, psMetadata *tableHeader, char *extname)
+// XXX: input parameter imageHeader is never used.
+bool pmSourcesWrite_PS1_DEV_0 (psFits *fits, psArray *sources, psMetadata *imageHeader,
+                               psMetadata *tableHeader, char *extname)
 {
+    PS_ASSERT_PTR_NON_NULL(fits, false);
+    PS_ASSERT_PTR_NON_NULL(sources, false);
+    PS_ASSERT_PTR_NON_NULL(extname, false);
 
     psArray *table;
@@ -147,4 +151,6 @@
 psArray *pmSourcesRead_PS1_DEV_0 (psFits *fits, psMetadata *header)
 {
+    PS_ASSERT_PTR_NON_NULL(fits, false);
+    PS_ASSERT_PTR_NON_NULL(header, false);
 
     bool status;
Index: /branches/eam_branch_20071023/psModules/src/objects/pmSourceIO_RAW.c
===================================================================
--- /branches/eam_branch_20071023/psModules/src/objects/pmSourceIO_RAW.c	(revision 15417)
+++ /branches/eam_branch_20071023/psModules/src/objects/pmSourceIO_RAW.c	(revision 15418)
@@ -3,6 +3,6 @@
  *  @author EAM, IfA
  *
- *  @version $Revision: 1.17 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2007-09-21 00:09:05 $
+ *  @version $Revision: 1.17.6.1 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2007-10-30 00:59:23 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -44,4 +44,7 @@
 {
 
+    PS_ASSERT_PTR_NON_NULL(sources, false);
+    PS_ASSERT_PTR_NON_NULL(filename, false);
+
     char *name = (char *) psAlloc (strlen(filename) + 10);
 
@@ -65,4 +68,6 @@
 bool pmSourcesWritePSFs (psArray *sources, char *filename)
 {
+    PS_ASSERT_PTR_NON_NULL(sources, false);
+    PS_ASSERT_PTR_NON_NULL(filename, false);
 
     double dPos;
@@ -124,4 +129,6 @@
 bool pmSourcesWriteEXTs (psArray *sources, char *filename, bool requireEXT)
 {
+    PS_ASSERT_PTR_NON_NULL(sources, false);
+    PS_ASSERT_PTR_NON_NULL(filename, false);
 
     double dPos;
@@ -184,4 +191,6 @@
 bool pmSourcesWriteNULLs (psArray *sources, char *filename)
 {
+    PS_ASSERT_PTR_NON_NULL(sources, false);
+    PS_ASSERT_PTR_NON_NULL(filename, false);
 
     int i;
@@ -230,4 +239,6 @@
 bool pmMomentsWriteText (psArray *sources, char *filename)
 {
+    PS_ASSERT_PTR_NON_NULL(sources, false);
+    PS_ASSERT_PTR_NON_NULL(filename, false);
 
     int i;
Index: /branches/eam_branch_20071023/psModules/src/objects/pmSourceIO_SMPDATA.c
===================================================================
--- /branches/eam_branch_20071023/psModules/src/objects/pmSourceIO_SMPDATA.c	(revision 15417)
+++ /branches/eam_branch_20071023/psModules/src/objects/pmSourceIO_SMPDATA.c	(revision 15418)
@@ -3,6 +3,6 @@
  *  @author EAM, IfA
  *
- *  @version $Revision: 1.11 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2007-09-21 00:09:05 $
+ *  @version $Revision: 1.11.6.1 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2007-10-30 00:59:23 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -42,6 +42,11 @@
 // this format consists of a header derived from the image header
 // followed by a zero-size matrix, followed by the table data
-bool pmSourcesWrite_SMPDATA (psFits *fits, psArray *sources, psMetadata *imageHeader, psMetadata *tableHeader, char *extname)
+// XXX: input parameter imageHeader is never used
+bool pmSourcesWrite_SMPDATA (psFits *fits, psArray *sources, psMetadata *imageHeader,
+                             psMetadata *tableHeader, char *extname)
 {
+    PS_ASSERT_PTR_NON_NULL(fits, false);
+    PS_ASSERT_PTR_NON_NULL(sources, false);
+    PS_ASSERT_PTR_NON_NULL(extname, false);
 
     psArray *table;
@@ -126,4 +131,6 @@
 psArray *pmSourcesRead_SMPDATA (psFits *fits, psMetadata *header)
 {
+    PS_ASSERT_PTR_NON_NULL(fits, false);
+    PS_ASSERT_PTR_NON_NULL(header, false);
 
     bool status;
Index: /branches/eam_branch_20071023/psModules/src/objects/pmSourceIO_SX.c
===================================================================
--- /branches/eam_branch_20071023/psModules/src/objects/pmSourceIO_SX.c	(revision 15417)
+++ /branches/eam_branch_20071023/psModules/src/objects/pmSourceIO_SX.c	(revision 15418)
@@ -3,6 +3,6 @@
  *  @author EAM, IfA
  *
- *  @version $Revision: 1.13 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2007-09-21 00:09:05 $
+ *  @version $Revision: 1.13.6.1 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2007-10-30 00:59:23 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -42,4 +42,6 @@
 bool pmSourcesWriteSX (psArray *sources, char *filename)
 {
+    PS_ASSERT_PTR_NON_NULL(sources, false);
+    PS_ASSERT_PTR_NON_NULL(filename, false);
 
     psF32 *PAR, *dPAR;
Index: /branches/eam_branch_20071023/psModules/src/objects/pmSourcePhotometry.c
===================================================================
--- /branches/eam_branch_20071023/psModules/src/objects/pmSourcePhotometry.c	(revision 15417)
+++ /branches/eam_branch_20071023/psModules/src/objects/pmSourcePhotometry.c	(revision 15418)
@@ -3,6 +3,6 @@
  *  @author EAM, IfA; GLG, MHPCC
  *
- *  @version $Revision: 1.36 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2007-09-29 03:14:55 $
+ *  @version $Revision: 1.36.2.1 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2007-10-30 00:59:23 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -39,5 +39,5 @@
 bool pmSourceMagnitudesInit (psMetadata *config)
 {
-
+    PS_ASSERT_PTR_NON_NULL(config, false);
     bool status;
 
@@ -64,6 +64,9 @@
 
 // XXX masked region should be (optionally) elliptical
-bool pmSourceMagnitudes (pmSource *source, pmPSF *psf, pmSourcePhotometryMode mode, psMaskType maskVal, psMaskType mark)
-{
+bool pmSourceMagnitudes (pmSource *source, pmPSF *psf, pmSourcePhotometryMode mode,
+                         psMaskType maskVal, psMaskType mark)
+{
+    PS_ASSERT_PTR_NON_NULL(source, false);
+    PS_ASSERT_PTR_NON_NULL(psf, false);
 
     int status = false;
@@ -269,11 +272,11 @@
 bool pmSourcePhotometryModel (float *fitMag, pmModel *model)
 {
+    PS_ASSERT_PTR_NON_NULL(fitMag, false);
+    if (model == NULL) {
+        return false;
+    }
 
     float fitSum = 0;
     *fitMag = NAN;
-
-    if (model == NULL) {
-        return false;
-    }
 
     // measure fitMag
@@ -289,14 +292,15 @@
 
 // return source aperture magnitude
-bool pmSourcePhotometryAper (float *apMag, pmModel *model, psImage *image, psImage *mask, psMaskType maskVal)
-{
+bool pmSourcePhotometryAper (float *apMag, pmModel *model, psImage *image, psImage *mask,
+                             psMaskType maskVal)
+{
+    PS_ASSERT_PTR_NON_NULL(apMag, false);
+    PS_ASSERT_PTR_NON_NULL(image, false);
+    PS_ASSERT_PTR_NON_NULL(mask, false);
+    PS_ASSERT_PTR_NON_NULL(model, false);
+
     float apSum = 0;
     float sky = 0;
     *apMag = NAN;
-
-    if (model == NULL) {
-        psError(PM_ERR_OBJECTS, true, "Model is NULL");
-        return false;
-    }
 
     if (DO_SKY) {
@@ -327,6 +331,12 @@
 
 // return source aperture magnitude
-bool pmSourcePixelWeight (float *pixWeight, pmModel *model, psImage *image, psImage *mask, psMaskType maskVal)
-{
+bool pmSourcePixelWeight (float *pixWeight, pmModel *model, psImage *image, psImage *mask,
+                          psMaskType maskVal)
+{
+    PS_ASSERT_PTR_NON_NULL(pixWeight, false);
+    PS_ASSERT_PTR_NON_NULL(image, false);
+    PS_ASSERT_PTR_NON_NULL(mask, false);
+    PS_ASSERT_PTR_NON_NULL(model, false);
+
     float modelSum = 0;
     float validSum = 0;
@@ -339,7 +349,4 @@
 
     *pixWeight = 0.0;
-
-    if (model == NULL)
-        return false;
 
     // we only care about the value of the object model, not the local sky
@@ -412,4 +419,6 @@
                              const bool unweighted_sum) // should the cross product be weighted?
 {
+    PS_ASSERT_PTR_NON_NULL(Mi, NAN);
+    PS_ASSERT_PTR_NON_NULL(Mj, NAN);
 
     int Xs, Xe, Ys, Ye;
@@ -475,4 +484,6 @@
                            const bool unweighted_sum) // should the cross product be weighted?
 {
+    PS_ASSERT_PTR_NON_NULL(Mi, NAN);
+    PS_ASSERT_PTR_NON_NULL(Mj, NAN);
 
     int Xs, Xe, Ys, Ye;
@@ -538,4 +549,5 @@
                       const bool unweighted_sum) // should the cross product be weighted?
 {
+    PS_ASSERT_PTR_NON_NULL(Mi, NAN);
     double flux = 0, wt = 0, factor = 0;
 
@@ -587,6 +599,11 @@
 # endif
 
-bool pmSourceChisq (pmModel *model, psImage *image, psImage *mask, psImage *weight, psMaskType maskVal)
-{
+bool pmSourceChisq (pmModel *model, psImage *image, psImage *mask, psImage *weight,
+                    psMaskType maskVal)
+{
+    PS_ASSERT_PTR_NON_NULL(model, false);
+    PS_ASSERT_PTR_NON_NULL(image, false);
+    PS_ASSERT_PTR_NON_NULL(mask, false);
+    PS_ASSERT_PTR_NON_NULL(weight, false);
 
     double dC = 0.0;
@@ -613,4 +630,5 @@
                       const bool unweighted_sum) // should the cross product be weighted?
 {
+    PS_ASSERT_PTR_NON_NULL(Mi, NAN);
     double flux = 0, wt = 0, factor = 0;
 
@@ -662,4 +680,6 @@
                               const bool unweighted_sum) // should the cross product be weighted?
 {
+    PS_ASSERT_PTR_NON_NULL(Mi, NAN);
+    PS_ASSERT_PTR_NON_NULL(Mj, NAN);
     int Xs, Xe, Ys, Ye;
     int xi, xj, yi, yj;
@@ -724,5 +744,6 @@
                              const bool unweighted_sum) // should the cross product be weighted?
 {
-
+    PS_ASSERT_PTR_NON_NULL(Mi, NAN);
+    PS_ASSERT_PTR_NON_NULL(Mj, NAN);
     int Xs, Xe, Ys, Ye;
     int xi, xj, yi, yj;
Index: /branches/eam_branch_20071023/psModules/src/objects/pmSourcePlotApResid.c
===================================================================
--- /branches/eam_branch_20071023/psModules/src/objects/pmSourcePlotApResid.c	(revision 15417)
+++ /branches/eam_branch_20071023/psModules/src/objects/pmSourcePlotApResid.c	(revision 15418)
@@ -4,6 +4,6 @@
  *  @author EAM, IfA
  *
- *  @version $Revision: 1.4 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2007-09-21 00:09:05 $
+ *  @version $Revision: 1.4.6.1 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2007-10-30 00:59:23 $
  *  Copyright 2006 IfA, University of Hawaii
  */
@@ -40,9 +40,14 @@
     # include <kapa.h>
 
-    // plot the sx, sy, sxy as vector field,
-    // plot the PSF measured sx, sy, sxy as vector field
-    // pull the sources from the config / file?
-    bool pmSourcePlotApResid (const pmFPAview *view, pmFPAfile *file, const pmConfig *config, pmSourcePlotLayout *layout)
+// plot the sx, sy, sxy as vector field,
+// plot the PSF measured sx, sy, sxy as vector field
+// pull the sources from the config / file?
+bool pmSourcePlotApResid (const pmFPAview *view, pmFPAfile *file, const pmConfig *config,
+                          pmSourcePlotLayout *layout)
 {
+    PS_ASSERT_PTR_NON_NULL(view, false);
+    PS_ASSERT_PTR_NON_NULL(file, false);
+    PS_ASSERT_PTR_NON_NULL(config, false);
+    PS_ASSERT_PTR_NON_NULL(layout, false);
 
     Graphdata graphdata;
@@ -150,5 +155,5 @@
 # else
 
-    bool pmSourcePlotApResid (const pmFPAview *view, pmFPAfile *file, const pmConfig *config, pmSourcePlotLayout *layout)
+bool pmSourcePlotApResid (const pmFPAview *view, pmFPAfile *file, const pmConfig *config, pmSourcePlotLayout *layout)
 {
     psLogMsg ("psphot", 3, "skipping ap-mag resid plot");
Index: /branches/eam_branch_20071023/psModules/src/objects/pmSourcePlotMoments.c
===================================================================
--- /branches/eam_branch_20071023/psModules/src/objects/pmSourcePlotMoments.c	(revision 15417)
+++ /branches/eam_branch_20071023/psModules/src/objects/pmSourcePlotMoments.c	(revision 15418)
@@ -5,6 +5,6 @@
  *  @author EAM, IfA
  *
- *  @version $Revision: 1.9 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2007-09-21 00:09:05 $
+ *  @version $Revision: 1.9.6.1 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2007-10-30 00:59:23 $
  *
  *  Copyright 2006 IfA, University of Hawaii
@@ -41,9 +41,14 @@
 // this variable is defined in psmodules.h if ohana-config is found
 # if (HAVE_KAPA)
-    # include <kapa.h>
+# include <kapa.h>
 
-    // plot the sx, sy moments plane (faint and bright sources)
-    bool pmSourcePlotMoments (const pmFPAview *view, pmFPAfile *file, const pmConfig *config, pmSourcePlotLayout *layout)
+// plot the sx, sy moments plane (faint and bright sources)
+bool pmSourcePlotMoments (const pmFPAview *view, pmFPAfile *file, const pmConfig *config,
+                          pmSourcePlotLayout *layout)
 {
+    PS_ASSERT_PTR_NON_NULL(view, false);
+    PS_ASSERT_PTR_NON_NULL(file, false);
+    PS_ASSERT_PTR_NON_NULL(config, false);
+    PS_ASSERT_PTR_NON_NULL(layout, false);
 
     Graphdata graphdata;
Index: /branches/eam_branch_20071023/psModules/src/objects/pmSourcePlotPSFModel.c
===================================================================
--- /branches/eam_branch_20071023/psModules/src/objects/pmSourcePlotPSFModel.c	(revision 15417)
+++ /branches/eam_branch_20071023/psModules/src/objects/pmSourcePlotPSFModel.c	(revision 15418)
@@ -5,6 +5,6 @@
  *  @author EAM, IfA
  *
- *  @version $Revision: 1.11 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2007-09-21 00:09:05 $
+ *  @version $Revision: 1.11.6.1 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2007-10-30 00:59:23 $
  *
  *  Copyright 2006 IfA, University of Hawaii
@@ -41,11 +41,16 @@
 // this variable is defined in psmodules.h if ohana-config is found
 # if (HAVE_KAPA)
-    # include <kapa.h>
-
-    // plot the sx, sy, sxy as vector field,
-    // plot the PSF measured sx, sy, sxy as vector field
-    // pull the sources from the config / file?
-    bool pmSourcePlotPSFModel (const pmFPAview *view, pmFPAfile *file, const pmConfig *config, pmSourcePlotLayout *layout)
+# include <kapa.h>
+
+// plot the sx, sy, sxy as vector field,
+// plot the PSF measured sx, sy, sxy as vector field
+// pull the sources from the config / file?
+bool pmSourcePlotPSFModel (const pmFPAview *view, pmFPAfile *file, const pmConfig *config,
+                           pmSourcePlotLayout *layout)
 {
+    PS_ASSERT_PTR_NON_NULL(view, false);
+    PS_ASSERT_PTR_NON_NULL(file, false);
+    PS_ASSERT_PTR_NON_NULL(config, false);
+    PS_ASSERT_PTR_NON_NULL(layout, false);
 
     Graphdata graphdata;
Index: /branches/eam_branch_20071023/psModules/src/objects/pmSourcePlots.c
===================================================================
--- /branches/eam_branch_20071023/psModules/src/objects/pmSourcePlots.c	(revision 15417)
+++ /branches/eam_branch_20071023/psModules/src/objects/pmSourcePlots.c	(revision 15418)
@@ -5,6 +5,6 @@
  *  @author EAM, IfA
  *
- *  @version $Revision: 1.4 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2007-05-04 00:54:09 $
+ *  @version $Revision: 1.4.16.1 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2007-10-30 00:59:23 $
  *
  *  Copyright 2006 IfA, University of Hawaii
@@ -36,4 +36,5 @@
     PS_ASSERT_PTR_NON_NULL(view, false);
     PS_ASSERT_PTR_NON_NULL(file, false);
+    PS_ASSERT_PTR_NON_NULL(config, false);
 
     if ((view->readout != -1) || (view->cell != -1)) {
@@ -149,4 +150,11 @@
 }
 
+bool psMemCheckSourcePlotLayout(psPtr ptr)
+{
+    PS_ASSERT_PTR(ptr, false);
+    return ( psMemGetDeallocator(ptr) == (psFreeFunc) pmSourcePlotLayoutFree);
+}
+
+
 /* we have three types of plots to produce (maybe more?)
  * for each plot, we need to supply the following information:
Index: /branches/eam_branch_20071023/psModules/src/objects/pmSourcePlots.h
===================================================================
--- /branches/eam_branch_20071023/psModules/src/objects/pmSourcePlots.h	(revision 15417)
+++ /branches/eam_branch_20071023/psModules/src/objects/pmSourcePlots.h	(revision 15418)
@@ -4,6 +4,6 @@
  * @author EAM, IfA
  *
- * @version $Revision: 1.4 $ $Name: not supported by cvs2svn $
- * @date $Date: 2007-05-04 00:54:09 $
+ * @version $Revision: 1.4.16.1 $ $Name: not supported by cvs2svn $
+ * @date $Date: 2007-10-30 00:59:23 $
  * Copyright 2006 Institute for Astronomy, University of Hawaii
  */
@@ -30,4 +30,5 @@
 
 pmSourcePlotLayout *pmSourcePlotLayoutAlloc();
+bool psMemCheckSourcePlotLayout(psPtr ptr);
 
 bool pmFPAviewWriteSourcePlot(const pmFPAview *view, pmFPAfile *file, const pmConfig *config);
Index: /branches/eam_branch_20071023/psModules/src/objects/pmSourceUtils.c
===================================================================
--- /branches/eam_branch_20071023/psModules/src/objects/pmSourceUtils.c	(revision 15417)
+++ /branches/eam_branch_20071023/psModules/src/objects/pmSourceUtils.c	(revision 15418)
@@ -6,6 +6,6 @@
  *  @author EAM, IfA: significant modifications.
  *
- *  @version $Revision: 1.3 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2007-09-21 00:09:05 $
+ *  @version $Revision: 1.3.6.1 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2007-10-30 00:59:23 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -63,5 +63,9 @@
 }
 
-pmSource *pmSourceFromModel (pmModel *model, pmReadout *readout, float radius, pmSourceType type) {
+pmSource *pmSourceFromModel (pmModel *model, pmReadout *readout, float radius, 
+                             pmSourceType type)
+{
+    PS_ASSERT_PTR_NON_NULL(model, NULL);
+    PS_ASSERT_PTR_NON_NULL(readout, NULL);
 
     pmSource *source = pmSourceAlloc ();
Index: /branches/eam_branch_20071023/psModules/src/objects/pmTrend2D.h
===================================================================
--- /branches/eam_branch_20071023/psModules/src/objects/pmTrend2D.h	(revision 15417)
+++ /branches/eam_branch_20071023/psModules/src/objects/pmTrend2D.h	(revision 15418)
@@ -5,6 +5,6 @@
  * @author EAM, IfA
  *
- * @version $Revision: 1.3 $ $Name: not supported by cvs2svn $
- * @date $Date: 2007-09-24 21:27:58 $
+ * @version $Revision: 1.3.4.1 $ $Name: not supported by cvs2svn $
+ * @date $Date: 2007-10-30 00:59:23 $
  * Copyright 2004 Maui High Performance Computing Center, University of Hawaii
  */
@@ -34,4 +34,6 @@
 pmTrend2D *pmTrend2DAlloc (pmTrend2DMode mode, psImage *image, int nXtrend, int nYtrend, psStats *stats);
 
+bool psMemCheckTrend2D(psPtr ptr);
+
 pmTrend2D *pmTrend2DNoImageAlloc (pmTrend2DMode mode, psImageBinning *binning, psStats *stats);
 
