Switch soon to become default checkout method on CircleCI It is not used by default yet, so switch to it explicitly as using it results in much faster checkout times. See https://circleci.com/changelog/introducing-a-faster-checkout-option/ Closes #25872.
Avoid using already destroyed timers in wxOSX Check that the timer is still valid before using the associated object. This is necessary because already queued timer events are still delivered, even if wxTimer is destroyed. Closes #25871.
... | ... | @@ -10,7 +10,8 @@ jobs: |
10 | 10 | name: Install Git
|
11 | 11 | command: dnf install -y git
|
12 | 12 | |
13 | - - checkout
|
|
13 | + - checkout:
|
|
14 | + method: blobless
|
|
14 | 15 | |
15 | 16 | - run:
|
16 | 17 | name: Install dependencies
|
... | ... | @@ -24,11 +24,17 @@ struct wxOSXTimerInfo |
24 | 24 | CFRunLoopTimerRef m_timerRef;
|
25 | 25 | };
|
26 | 26 | |
27 | -void wxProcessTimer(CFRunLoopTimerRef WXUNUSED(theTimer), void *data)
|
|
27 | +void wxProcessTimer(CFRunLoopTimerRef theTimer, void *data)
|
|
28 | 28 | {
|
29 | 29 | if ( data == nullptr )
|
30 | 30 | return;
|
31 | 31 | |
32 | + // CFRunLoop can fire timer callbacks after CFRunLoopTimerInvalidate()
|
|
33 | + // has been called (e.g., if the callback was already queued when Stop() was called).
|
|
34 | + // Verify the timer is still valid before proceeding to avoid crashes.
|
|
35 | + if ( !CFRunLoopTimerIsValid(theTimer) )
|
|
36 | + return;
|
|
37 | + |
|
32 | 38 | wxOSXTimerImpl* timer = (wxOSXTimerImpl*)data;
|
33 | 39 | |
34 | 40 | if ( timer->IsOneShot() )
|
—
View it on GitLab.
You're receiving this email because of your account on gitlab.com. Manage all notifications · Help