Changeset 302 for SH_SHM/trunk


Ignore:
Timestamp:
01/11/2011 11:21:08 PM (12 years ago)
Author:
marcus
Message:

r144 | klaus | 2010-12-21 11:08:28 +0100 (Di, 21 Dez 2010) | 1 line

implemented endless loop preventer in SeedReadStream?: ill data files could lead to endless loops via SeedReadNextReccord? always reading the same record or looping the same sequence of records

File:
1 edited

Legend:

Unmodified
Added
Removed
  • SH_SHM/trunk/source/seed_io/seed_lib.c

    r261 r302  
    33 *      ========== 
    44 * 
    5  * $Revision: 134 $, $Date: 2010-08-11 09:51:01 +0200 (Mi, 11 Aug 2010) $ 
     5 * $Revision: 144 $, $Date: 2010-12-21 11:08:28 +0100 (Di, 21 Dez 2010) $ 
    66 * 
    77 * SEED library 
     
    24542454        int      i;           /* counter */ 
    24552455        char     recmsg[cBcLineLth+1];  /* output string */ 
     2456        int      eloop_cnt;   /* endless loop preventer: counter */ 
     2457        float    eloop_ratio; /* endless loop preventer; samples gained per loop */ 
    24562458 
    24572459        /* executable code */ 
     
    24852487        *dt = 0.0; 
    24862488        expectime.year = 0; 
     2489        eloop_cnt = 0; 
    24872490        /* reset decode routine */ 
    24882491        SeedDecodeSteim1( NULL, swap, 0, NULL, NULL ); 
     
    26592662                                strncpy( recmsg, seedv_rec->seqno, 6 ); 
    26602663                                recmsg[6] = '\0'; 
    2661                                 fprintf( stderr, "SeedReadStream: record %6s, time %s\n", 
     2664                                fprintf( stderr, "ecord %6s, time %s\n", 
    26622665                                        recmsg, str ); 
    26632666                                fprintf( stderr, 
     
    26872690                        } /*endif*/ 
    26882691                } /*endwhile*/ 
     2692 
     2693                /* endless loop preventer */ 
     2694                eloop_cnt++; 
     2695                eloop_ratio = (float)(*smplth) / (float)eloop_cnt; 
     2696                /*printf( "********* dbg: eloop_ratio %g\n", eloop_ratio );*/ 
     2697                if  (eloop_cnt > 100 && eloop_ratio < 10.0)  { 
     2698                    fprintf( stderr, 
     2699                                "SeedReadStream: endless loop preventer aborted after %d loops\n", 
     2700                                eloop_cnt ); 
     2701                        break; 
     2702                } /*endif*/ 
    26892703 
    26902704        } /*endfor*/ 
Note: See TracChangeset for help on using the changeset viewer.