Index: trunk/psModules/src/imcombine/pmStack.c
===================================================================
--- trunk/psModules/src/imcombine/pmStack.c	(revision 15390)
+++ trunk/psModules/src/imcombine/pmStack.c	(revision 15396)
@@ -8,6 +8,6 @@
  *  @author GLG, MHPCC
  *
- *  @version $Revision: 1.13 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2007-08-23 23:43:12 $
+ *  @version $Revision: 1.14 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2007-10-26 23:15:06 $
  *
  *  Copyright 2004-2007 Institute for Astronomy, University of Hawaii
@@ -221,4 +221,7 @@
     for (int i = 0; i < num; i++) {
         pmStackData *data = inputs->data[i]; // Stack data of interest
+        if (!data) {
+            continue;
+        }
         psImage *image = data->readout->image; // Image of interest
         psImage *weight = data->readout->weight; // Weight map of interest
@@ -292,4 +295,7 @@
                 // Add the pixel as one to inspect
                 pmStackData *data = inputs->data[j]; // Stack data of interest
+                if (!data) {
+                    continue;
+                }
                 data->pixels = psPixelsAdd(data->pixels, PIXEL_LIST_BUFFER, x, y);
                 // Mask it so it's not considered in other iterations within this function
@@ -315,6 +321,8 @@
     *num = input->n;
 
-    // The first is a template
-    pmStackData *data = input->data[0]; // First image off the rank
+    pmStackData *data = NULL;           // First image off the rank, used as a template
+    for (int i = 0; !data && i < input->n; i++) {
+        data = input->data[i];
+    }
     PS_ASSERT_PTR_NON_NULL(data, false);
     assert(psMemGetDeallocator(data) == (psFreeFunc)stackDataFree); // Ensure it's the right type
@@ -338,4 +346,7 @@
     for (int i = 1; i < *num; i++) {
         pmStackData *data = input->data[i]; // Stack data for this input
+        if (!data) {
+            continue;
+        }
         assert(psMemGetDeallocator(data) == (psFreeFunc)stackDataFree); // Ensure it's the right type
         if (!data->readout) {
@@ -469,5 +480,8 @@
     for (int i = 0; i < input->n; i++) {
         pmStackData *data = input->data[i];
-        assert(data && data->pixels);
+        if (!data) {
+            continue;
+        }
+        assert(data->pixels);
         psPixels *pixels = data->pixels;// The pixels of interest
         for (int j = 0; j < pixels->n; j++) {
@@ -544,4 +558,7 @@
     for (int i = 0; i < num; i++) {
         pmStackData *data = input->data[i]; // Stack data for this input
+        if (!data) {
+            weights->data.F32[i] = 0.0;
+        }
         weights->data.F32[i] = data->weight;
     }
@@ -561,4 +578,7 @@
         for (int i = 0; i < num; i++) {
             pmStackData *data = input->data[i]; // Stacking data; contains the list of pixels
+            if (!data) {
+                continue;
+            }
             pixels = psPixelsConcatenate(pixels, data->pixels);
             data->pixels = psPixelsRealloc(data->pixels, PIXEL_LIST_BUFFER); // Just in case more rejection
@@ -596,4 +616,7 @@
             for (int i = 0; i < num; i++) {
                 pmStackData *data = input->data[i]; // Stack data for this input
+                if (!data) {
+                    continue;
+                }
                 data->pixels = psPixelsAllocEmpty(PIXEL_LIST_BUFFER);
             }
@@ -611,4 +634,7 @@
             for (int i = 0; i < num; i++) {
                 pmStackData *data = input->data[i]; // Stack data for this input
+                if (!data) {
+                    continue;
+                }
                 psTrace("psModules.imcombine", 5, "Image %d: %ld pixels to inspect.\n", i, data->pixels->n);
             }
