Commit edb975b07daca23af35014528d1992c5b90b1807

Authored by David Mayerich
1 parent 6d242237

created a stim::envi default constructor and fixed a seg fault when an unopened file is closed

Showing 1 changed file with 13 additions and 8 deletions   Show diff stats
@@ -61,6 +61,11 @@ class envi{ @@ -61,6 +61,11 @@ class envi{
61 61
62 public: 62 public:
63 63
  64 + /// Default constructor
  65 + envi(){
  66 + file = NULL; //set the file pointer to NULL
  67 + }
  68 +
64 envi_header header; 69 envi_header header;
65 70
66 void* malloc_spectrum(){ 71 void* malloc_spectrum(){
@@ -979,12 +984,13 @@ public: @@ -979,12 +984,13 @@ public:
979 } 984 }
980 985
981 /// Closes the ENVI file. 986 /// Closes the ENVI file.
982 - bool close(){ 987 + void close(){
  988 + if(file == NULL) return;
983 if(header.interleave == envi_header::BSQ){ 989 if(header.interleave == envi_header::BSQ){
984 if(header.data_type ==envi_header::float32) 990 if(header.data_type ==envi_header::float32)
985 - return ((bsq<float>*)file)->close(); 991 + ((bsq<float>*)file)->close();
986 else if(header.data_type == envi_header::float64) 992 else if(header.data_type == envi_header::float64)
987 - return ((bsq<double>*)file)->close(); 993 + ((bsq<double>*)file)->close();
988 else{ 994 else{
989 std::cout<<"ERROR: unidentified data type"<<std::endl; 995 std::cout<<"ERROR: unidentified data type"<<std::endl;
990 exit(1); 996 exit(1);
@@ -993,9 +999,9 @@ public: @@ -993,9 +999,9 @@ public:
993 999
994 else if(header.interleave == envi_header::BIL){ 1000 else if(header.interleave == envi_header::BIL){
995 if(header.data_type ==envi_header::float32) 1001 if(header.data_type ==envi_header::float32)
996 - return ((bil<float>*)file)->close(); 1002 + ((bil<float>*)file)->close();
997 else if(header.data_type == envi_header::float64) 1003 else if(header.data_type == envi_header::float64)
998 - return ((bil<double>*)file)->close(); 1004 + ((bil<double>*)file)->close();
999 else{ 1005 else{
1000 std::cout<<"ERROR: unidentified data type"<<std::endl; 1006 std::cout<<"ERROR: unidentified data type"<<std::endl;
1001 exit(1); 1007 exit(1);
@@ -1004,15 +1010,14 @@ public: @@ -1004,15 +1010,14 @@ public:
1004 1010
1005 else if(header.interleave == envi_header::BIP){ 1011 else if(header.interleave == envi_header::BIP){
1006 if(header.data_type ==envi_header::float32) 1012 if(header.data_type ==envi_header::float32)
1007 - return ((bip<float>*)file)->close(); 1013 + ((bip<float>*)file)->close();
1008 else if(header.data_type == envi_header::float64) 1014 else if(header.data_type == envi_header::float64)
1009 - return ((bip<double>*)file)->close(); 1015 + ((bip<double>*)file)->close();
1010 else{ 1016 else{
1011 std::cout<<"ERROR: unidentified data type"<<std::endl; 1017 std::cout<<"ERROR: unidentified data type"<<std::endl;
1012 exit(1); 1018 exit(1);
1013 } 1019 }
1014 } 1020 }
1015 - return false;  
1016 } 1021 }
1017 1022
1018 /// Retrieve a single pixel and stores it in pre-allocated memory. 1023 /// Retrieve a single pixel and stores it in pre-allocated memory.