@@ -44,8 +44,8 @@ static const int total_ticks = 10;
44
44
DigitalOut led1 (LED1);
45
45
DigitalOut led2 (LED2);
46
46
47
- Ticker *ticker1;
48
- Ticker *ticker2;
47
+ Ticker *volatile ticker1;
48
+ Ticker *volatile ticker2;
49
49
50
50
volatile int ticker_count = 0 ;
51
51
volatile bool print_tick = false ;
@@ -67,15 +67,21 @@ void ticker_callback_2_led(void) {
67
67
68
68
void ticker_callback_1_switch_to_2 (void ) {
69
69
++callback_trigger_count;
70
- ticker1->detach ();
71
- ticker1->attach_us (ticker_callback_2_switch_to_1, ONE_MILLI_SEC);
70
+ // If ticker is NULL then it is being or has been deleted
71
+ if (ticker1) {
72
+ ticker1->detach ();
73
+ ticker1->attach_us (ticker_callback_2_switch_to_1, ONE_MILLI_SEC);
74
+ }
72
75
ticker_callback_1_led ();
73
76
}
74
77
75
78
void ticker_callback_2_switch_to_1 (void ) {
76
79
++callback_trigger_count;
77
- ticker2->detach ();
78
- ticker2->attach_us (ticker_callback_1_switch_to_2, ONE_MILLI_SEC);
80
+ // If ticker is NULL then it is being or has been deleted
81
+ if (ticker2) {
82
+ ticker2->detach ();
83
+ ticker2->attach_us (ticker_callback_1_switch_to_2, ONE_MILLI_SEC);
84
+ }
79
85
ticker_callback_2_led ();
80
86
}
81
87
@@ -159,13 +165,19 @@ utest::v1::status_t two_ticker_case_setup_handler_t(const Case *const source, co
159
165
}
160
166
161
167
utest::v1::status_t one_ticker_case_teardown_handler_t (const Case *const source, const size_t passed, const size_t failed, const failure_t reason) {
162
- delete ticker1;
168
+ Ticker *temp1 = ticker1;
169
+ ticker1 = NULL ;
170
+ delete temp1;
163
171
return greentea_case_teardown_handler (source, passed, failed, reason);
164
172
}
165
173
166
174
utest::v1::status_t two_ticker_case_teardown_handler_t (const Case *const source, const size_t passed, const size_t failed, const failure_t reason) {
167
- delete ticker1;
168
- delete ticker2;
175
+ Ticker *temp1 = ticker1;
176
+ Ticker *temp2 = ticker2;
177
+ ticker1 = NULL ;
178
+ ticker2 = NULL ;
179
+ delete temp1;
180
+ delete temp2;
169
181
return greentea_case_teardown_handler (source, passed, failed, reason);
170
182
}
171
183
0 commit comments