X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=DEM%2Fdem.cxx;h=b76f183b1be6292daabe3c342c916c364a158e2a;hb=317854534f70b945e79e5c4ef6e9996a469064a6;hp=0e3351f18adf0a491c7678cc07a32e95e149b7e0;hpb=5880cd9ec06f1e986d9d2441fc70b2931834a2ec;p=flightgear.git diff --git a/DEM/dem.cxx b/DEM/dem.cxx index 0e3351f18..b76f183b1 100644 --- a/DEM/dem.cxx +++ b/DEM/dem.cxx @@ -198,7 +198,7 @@ static int next_exp(gzFile fd) { // read and parse DEM "A" record -void fgDEM::read_a_record( void ) { +int fgDEM::read_a_record( void ) { int i, inum; double dnum; char name[144]; @@ -225,6 +225,10 @@ void fgDEM::read_a_record( void ) { inum = next_int(fd); printf(" DEM level code = %d\n", inum); + if ( inum > 3 ) { + return(0); + } + // Pattern code, 1 indicates a regular elevation pattern inum = next_int(fd); printf(" Pattern code = %d\n", inum); @@ -331,6 +335,8 @@ void fgDEM::read_a_record( void ) { // number of profiles dem_num_profiles = cols = next_int(fd); printf(" Expecting %d profiles\n", dem_num_profiles); + + return(1); } @@ -377,7 +383,9 @@ int fgDEM::parse( void ) { cur_col = 0; - read_a_record(); + if ( !read_a_record() ) { + return(0); + } for ( i = 0; i < dem_num_profiles; i++ ) { // printf("Ready to read next b record\n"); @@ -391,7 +399,7 @@ int fgDEM::parse( void ) { printf(" Done parsing\n"); - return(0); + return(1); } @@ -772,6 +780,10 @@ fgDEM::~fgDEM( void ) { // $Log$ +// Revision 1.7 1998/06/05 18:14:39 curt +// Abort out early when reading the "A" record if it doesn't look like +// a proper DEM file. +// // Revision 1.6 1998/05/02 01:49:21 curt // Fixed a bug where the wrong variable was being initialized. //