Changeset 45707


Ignore:
Timestamp:
Mar 18, 2011, 1:53:57 AM (13 years ago)
Author:
huhabla
Message:

Better NULL pointer handling.

Location:
grass/tags/release_20110103_grass_6_4_1RC1/raster3d/r3.stats
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • grass/tags/release_20110103_grass_6_4_1RC1/raster3d/r3.stats/description.html

    r43659 r45707  
    1010<H2>NOTES</H2>
    1111
    12 As with most GRASS raster3D modules, <EM>r3.univar</EM> operates on the cell
     12As with most GRASS raster3D modules, <EM>r3.stats</EM> operates on the cell
    1313array defined by the current 3D region settings, not the original extent and
    1414resolution of the input map. See <em><A HREF="g.region.html">g.region</A></em>.
  • grass/tags/release_20110103_grass_6_4_1RC1/raster3d/r3.stats/main.c

    r32583 r45707  
    5353
    5454/*prototypes */
    55 equal_val_array *alloc_equal_val_array(int count);
    56 void free_equal_val_array(equal_val_array * vals);
    57 equal_val_array *add_equal_val_to_array(equal_val_array * array, double val);
    58 int check_equal_value(equal_val_array * array, double val);
    59 stat_table *create_stat_table(int nsteps, equal_val_array * values,
     55static equal_val_array *alloc_equal_val_array(int count);
     56static void free_equal_val_array(equal_val_array * vals);
     57static equal_val_array *add_equal_val_to_array(equal_val_array * array, double val);
     58static int check_equal_value(equal_val_array * array, double val);
     59static stat_table *create_stat_table(int nsteps, equal_val_array * values,
    6060                              double min, double max);
    61 void free_stat_table(stat_table * stats);
    62 void print_stat_table(stat_table * stats);
    63 void update_stat_table(stat_table * stats, G3D_Region * region);
    64 void heapsort_eqvals(equal_val_array * data, int n);
     61static void free_stat_table(stat_table * stats);
     62static void print_stat_table(stat_table * stats);
     63static void update_stat_table(stat_table * stats, G3D_Region * region);
     64static void heapsort_eqvals(equal_val_array * data, int n);
    6565static void downheap_eqvals(equal_val_array * data, int n, int k);
    6666static void check_range_value(stat_table * stats, double value);
     
    547547    float val_f;                /* for misc use */
    548548    double val_d;               /* for misc use */
    549     stat_table *stats;
     549    stat_table *stats = NULL;
    550550    double min, max;
    551     equal_val_array *eqvals;
     551    equal_val_array *eqvals = NULL;
    552552
    553553    unsigned int n = 0, nsteps;
    554554    int map_type;
    555     char *infile;
    556     void *map;
     555    char *infile = NULL;
     556    void *map = NULL;
    557557    G3D_Region region;
    558558    unsigned int rows, cols, depths;
     
    661661        }
    662662
    663         /* sort the equal values array */
    664         G_message(_("Sort non-null values"));
    665         heapsort_eqvals(eqvals, eqvals->count);
    666 
    667         /* create the statistic table with equal values */
    668         stats = create_stat_table(eqvals->count, eqvals, 0, 0);
    669         /* compute the number of null values */
    670         stats->null->count = rows * cols * depths - n;
    671 
    672         if (eqvals)
    673             free_equal_val_array(eqvals);
    674 
     663        if (eqvals) {
     664            /* sort the equal values array */
     665            G_message(_("Sort non-null values"));
     666            heapsort_eqvals(eqvals, eqvals->count);
     667
     668            /* create the statistic table with equal values */
     669            stats = create_stat_table(eqvals->count, eqvals, 0, 0);
     670            /* compute the number of null values */
     671            stats->null->count = rows * cols * depths - n;
     672
     673            free_equal_val_array(eqvals);
     674        }
    675675    }
    676676    else {
     
    710710    }
    711711
    712     /* Compute the volume and percentage */
    713     update_stat_table(stats, &region);
    714     /* Print the statistics to stdout */
    715     print_stat_table(stats);
    716 
    717     free_stat_table(stats);
     712    if(stats) {
     713        /* Compute the volume and percentage */
     714        update_stat_table(stats, &region);
     715        /* Print the statistics to stdout */
     716        print_stat_table(stats);
     717
     718        free_stat_table(stats);
     719    }
     720   
    718721    exit(EXIT_SUCCESS);
    719722}
Note: See TracChangeset for help on using the changeset viewer.