Index: trunk/psphot/src/psphotChoosePSF.c
===================================================================
--- trunk/psphot/src/psphotChoosePSF.c	(revision 6117)
+++ trunk/psphot/src/psphotChoosePSF.c	(revision 6379)
@@ -1,4 +1,5 @@
 # include "psphot.h"
 
+// 2006.02.07 : no leaks!
 // try PSF models and select best option
 pmPSF *psphotChoosePSF (psMetadata *config, psArray *sources, psStats *skystats) { 
@@ -8,5 +9,4 @@
     pmPSFtry 	   *try   = NULL;
     psArray    	   *stars = NULL;
-    psMetadataItem *item  = NULL;
 
     psTimerStart ("psphot");
@@ -37,4 +37,5 @@
     psMetadataItem *mdi = psMetadataLookup (config, "PSF_MODEL");
     if (mdi == NULL) psAbort ("psphotChoosePSF", "missing PSF_MODEL selection");
+
     if (mdi->type == PS_DATA_STRING) {
 	list = psListAlloc(NULL);
@@ -51,11 +52,10 @@
     psListIterator *iter = psListIteratorAlloc (list, PS_LIST_HEAD, FALSE); 
     for (int i = 0; i < models->n; i++) { 
-
-	item = psListGetAndIncrement (iter);
+	// XXX psListGetAndIncrement does not increment ref counter!?
+	// XXX if it did, i should free 'item' below
+	psMetadataItem *item = psListGetAndIncrement (iter);
 	modelName = item->data.V;
-
 	models->data[i] = pmPSFtryModel (stars, modelName, RADIUS);
-	psFree (modelName);
-	psFree (item);
+	// psFree (item);
     }
     psFree (iter);
@@ -98,5 +98,5 @@
     psLogMsg ("psphot.pspsf", 3, "selected psf model %s, ApResid: %f +/- %f\n", modelName, psf->ApResid, psf->dApResid);
 
-    char *breakPt = psMetadataLookupPtr (&status, config, "BREAK_POINT");
+    char *breakPt = psMetadataLookupStr (&status, config, "BREAK_POINT");
     if (!strcasecmp (breakPt, "PSFFIT")) exit (0);
 
