adc: fix segmentation fault when exiting the application

'adc_sampling_cb_data' struct is a local variable of the 'main' function.
Sometimes, the ADC callback accesses to it once the main function has exited
(when it is out of scope), causing a segmentation fault.
To solve this issue, adc_sampling_cb_data' struct is now a global variable.

Signed-off-by: Francisco Gil <francisco.gilmartinez@digi.com>
This commit is contained in:
Francisco Gil 2017-12-05 09:29:35 +01:00
parent 1e02f43c81
commit 5c3834f845
1 changed files with 3 additions and 3 deletions

View File

@ -31,13 +31,14 @@
#define DEFAULT_TIME_INTERVAl 1
#define DEFAULT_NUMBER_OF_SAMPLES 10
static adc_t *adc;
struct adc_sampling_cb_data {
adc_t *adc;
int number_of_samples;
};
static adc_t *adc;
struct adc_sampling_cb_data cb_data;
/*
* usage_and_exit() - Show usage information and exit with 'exitval' return
* value
@ -157,7 +158,6 @@ int main(int argc, char *argv[])
{
int channel = 0, chip = 0, interval = 0, number_of_samples = 0;
char *name = basename(argv[0]);
struct adc_sampling_cb_data cb_data;
/* Check input parameters */
if (argc == 1) {