Index: trunk/psModules/src/camera/pmFPAfileIO.c
===================================================================
--- trunk/psModules/src/camera/pmFPAfileIO.c	(revision 9437)
+++ trunk/psModules/src/camera/pmFPAfileIO.c	(revision 9511)
@@ -66,4 +66,7 @@
     // determine the file name
     // free a name allocated earlier
+    // XXX for CMP files which defer opening, we have an inconsistent value
+    // for file->extra here and in the pmFPAfileDefine fucntions.
+    //
     psFree (file->filename);
     file->filename = pmFPAfileNameFromRule (file->filerule, file, view);
@@ -254,4 +257,10 @@
     }
 
+    // an internal file should not be returned to here
+    if (file->mode == PM_FPA_MODE_INTERNAL) {
+        psError(PS_ERR_IO, true, "File is mode PM_FPA_MODE_INTERNAL");
+        return false;
+    }
+
     // get the current level
     pmFPALevel level = pmFPAviewLevel (view);
@@ -325,4 +334,10 @@
     }
 
+    // an internal file should not be returned to here
+    if (file->mode == PM_FPA_MODE_INTERNAL) {
+        psError(PS_ERR_IO, true, "File is mode PM_FPA_MODE_INTERNAL");
+        return false;
+    }
+
     // get the current level
     pmFPALevel level = pmFPAviewLevel (view);
@@ -382,4 +397,10 @@
         psTrace("psModules.camera", 6, "skip write for %s, mode is not WRITE", file->name);
         return true;
+    }
+
+    // an internal file should not be returned to here
+    if (file->mode == PM_FPA_MODE_INTERNAL) {
+        psError(PS_ERR_IO, true, "File is mode PM_FPA_MODE_INTERNAL");
+        return false;
     }
 
@@ -459,4 +480,10 @@
     }
 
+    // an internal file should not be returned to here
+    if (file->mode == PM_FPA_MODE_INTERNAL) {
+        psError(PS_ERR_IO, true, "File is mode PM_FPA_MODE_INTERNAL");
+        return false;
+    }
+
     // get the current level
     pmFPALevel level = pmFPAviewLevel (view);
@@ -510,4 +537,10 @@
     if (file->state == PM_FPA_STATE_CLOSED) {
         return true;
+    }
+
+    // an internal file should not be returned to here
+    if (file->mode == PM_FPA_MODE_INTERNAL) {
+        psError(PS_ERR_IO, true, "File is mode PM_FPA_MODE_INTERNAL");
+        return false;
     }
 
