Profile: properly initialize plot_info structures

The create_plot_info_new() function releases old plot data. This
can only work if the plot_info structure was initialized previously.
The ProfileWidget2 did that by a memset, but other parts of the code
did not.

Therefore, introduce a init_plot_info() function and call that when
generating a plot_info struct. Constructors would make this so much
easier - but since this is called from C, we can't use them.

Fixes #2251

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
Berthold Stoeger 2019-08-25 12:56:41 +02:00 committed by Dirk Hohndel
parent 0e55739f03
commit 25b30da244
7 changed files with 18 additions and 4 deletions

View file

@ -1318,12 +1318,23 @@ static void debug_print_profiledata(struct plot_info *pi)
}
#endif
/*
* Initialize a plot_info structure to all-zeroes
*/
void init_plot_info(struct plot_info *pi)
{
memset(pi, 0, sizeof(*pi));
}
/*
* Create a plot-info with smoothing and ranged min/max
*
* This also makes sure that we have extra empty events on both
* sides, so that you can do end-points without having to worry
* about it.
*
* The old data will be freed. Before the first call, the plot
* info must be initialized with init_plot_info().
*/
void create_plot_info_new(struct dive *dive, struct divecomputer *dc, struct plot_info *pi, bool fast, struct deco_state *planner_ds)
{