]> git.ipfire.org Git - thirdparty/rrdtool-1.x.git/commitdiff
never exit from library function ... #653
authorTobias Oetiker <tobi@oetiker.ch>
Mon, 10 Aug 2015 11:37:43 +0000 (13:37 +0200)
committerTobias Oetiker <tobi@oetiker.ch>
Mon, 10 Aug 2015 11:37:43 +0000 (13:37 +0200)
src/rrd_graph.c
src/rrd_graph.h

index d12df196e42b1fbf58836cd5ef88174bd5f24767..ff21f32195dc77a975940ceba85667a387bc6ac2 100644 (file)
@@ -759,7 +759,7 @@ void apply_gridfit(
 
 /* reduce data reimplementation by Alex */
 
-void reduce_data(
+int reduce_data(
     enum cf_en cf,      /* which consolidation function ? */
     unsigned long cur_step, /* step the data currently is in */
     time_t *start,      /* start, end and step as requested ... */
@@ -841,10 +841,8 @@ void reduce_data(
 /* if this gets triggered, something is REALLY WRONG ... we die immediately */
 
     if (row_cnt % reduce_factor) {
-        printf("SANITY CHECK: %lu rows cannot be reduced by %i \n",
-               row_cnt, reduce_factor);
-        printf("BUG in reduce_data()\n");
-        exit(1);
+        rrd_set_error("SANITY CHECK: %lu rows cannot be reduced by %i \n",  row_cnt, reduce_factor);
+        return 0;
     }
 
     /* Now combine reduce_factor intervals at a time
@@ -929,6 +927,7 @@ void reduce_data(
         printf("\n");
     }
 #endif
+    return 1;
 }
 
 
@@ -1034,12 +1033,14 @@ int data_fetch(
             im->gdes[i].step = max(im->gdes[i].step,im->step);
             if (ft_step < im->gdes[i].step) {
 
-                reduce_data(im->gdes[i].cf_reduce_set ? im->gdes[i].cf_reduce : im->gdes[i].cf,
+                if (!reduce_data(im->gdes[i].cf_reduce_set ? im->gdes[i].cf_reduce : im->gdes[i].cf,
                             ft_step,
                             &im->gdes[i].start,
                             &im->gdes[i].end,
                             &im->gdes[i].step,
-                            &im->gdes[i].ds_cnt, &im->gdes[i].data);
+                            &im->gdes[i].ds_cnt, &im->gdes[i].data)){
+                     return -1;
+                }
             } else {
                 im->gdes[i].step = ft_step;
             }
index 2c6930e0fd6c16afa6126dfe6c85cac252f81d71..3d7d3a9953c77cfab69f3b6f62a83eb3c0d71feb 100644 (file)
@@ -382,7 +382,7 @@ void      expand_range(
     image_desc_t *);
 void      apply_gridfit(
     image_desc_t *);
-void      reduce_data(
+int     reduce_data(
     enum cf_en,
     unsigned long,
     time_t *,