X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Foutput%2Fcharts%2Fboxplot.c;h=3261d02eba685c252018fcfdafe262376f141f33;hb=010a024889199741ca697f95a34f8635f4ab2917;hp=7e9248004b3c2b2662f684241e55ab06b865b0c4;hpb=d0b91eae59319ab2756d0d43b9cb15eb9cd3c234;p=pspp diff --git a/src/output/charts/boxplot.c b/src/output/charts/boxplot.c index 7e9248004b..3261d02eba 100644 --- a/src/output/charts/boxplot.c +++ b/src/output/charts/boxplot.c @@ -1,5 +1,5 @@ /* PSPP - a program for statistical analysis. - Copyright (C) 2004, 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2004, 2008, 2009, 2011 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -17,16 +17,18 @@ #include -#include +#include "output/charts/boxplot.h" -#include -#include +#include "math/box-whisker.h" +#include "output/chart-provider.h" struct boxplot * boxplot_create (double y_min, double y_max, const char *title) { + if (y_min >= y_max) + return NULL; struct boxplot *boxplot = xmalloc (sizeof *boxplot); - chart_item_init (&boxplot->chart_item, &boxplot_class, title); + chart_init (&boxplot->chart, &boxplot_class, title); boxplot->y_min = y_min; boxplot->y_max = y_max; boxplot->boxes = NULL; @@ -38,6 +40,13 @@ void boxplot_add_box (struct boxplot *boxplot, struct box_whisker *bw, const char *label) { + if (boxplot == NULL) + { + struct statistic *statistic = &bw->parent.parent; + statistic->destroy (statistic); + return; + } + struct boxplot_box *box; if (boxplot->n_boxes >= boxplot->boxes_allocated) boxplot->boxes = x2nrealloc (boxplot->boxes, &boxplot->boxes_allocated, @@ -48,9 +57,12 @@ boxplot_add_box (struct boxplot *boxplot, } static void -boxplot_chart_destroy (struct chart_item *chart_item) +boxplot_chart_destroy (struct chart *chart) { - struct boxplot *boxplot = to_boxplot (chart_item); + struct boxplot *boxplot = to_boxplot (chart); + if (boxplot == NULL) + return; + size_t i; for (i = 0; i < boxplot->n_boxes; i++) @@ -64,7 +76,7 @@ boxplot_chart_destroy (struct chart_item *chart_item) free (boxplot); } -const struct chart_item_class boxplot_class = +const struct chart_class boxplot_class = { boxplot_chart_destroy };