[vlc-devel] [PATCH] atomic: prevent overflow
Rémi Denis-Courmont
remi at remlab.net
Mon Feb 24 09:57:28 CET 2020
Hi,
There is some rationale for uintptr: if you have at least one pointer per ref, you can't have more than UINTPTR_MAX (divided by sizeof (void *)) refs.
With uintmax, I don't see it. Also uintmax might not be supported as atomic if it's 128-bits.
Le 24 février 2020 10:52:40 GMT+02:00, Romain Vimont <rom1v at videolabs.io> a écrit :
>LGTM
>
>But maybe uintmax_t is more appropriate than uintptr_t (semantically).
>
>On 2/24/20 9:33 AM, quentin.chateau at deepskycorp.com wrote:
>> From: Quentin Chateau <quentin.chateau at deepskycorp.com>
>>
>> ---
>> include/vlc_atomic.h | 6 +++---
>> 1 file changed, 3 insertions(+), 3 deletions(-)
>>
>> diff --git a/include/vlc_atomic.h b/include/vlc_atomic.h
>> index e2d4fe5360..625738849a 100644
>> --- a/include/vlc_atomic.h
>> +++ b/include/vlc_atomic.h
>> @@ -60,7 +60,7 @@ static inline void
>vlc_atomic_store_float(vlc_atomic_float *atom, float f)
>> }
>>
>> typedef struct vlc_atomic_rc_t {
>> - atomic_uint refs;
>> + atomic_uintptr_t refs;
>> } vlc_atomic_rc_t;
>>
>> /** Init the RC to 1 */
>> @@ -72,7 +72,7 @@ static inline void
>vlc_atomic_rc_init(vlc_atomic_rc_t *rc)
>> /** Increment the RC */
>> static inline void vlc_atomic_rc_inc(vlc_atomic_rc_t *rc)
>> {
>> - unsigned prev = atomic_fetch_add_explicit(&rc->refs, 1,
>memory_order_relaxed);
>> + uintptr_t prev = atomic_fetch_add_explicit(&rc->refs, 1,
>memory_order_relaxed);
>> vlc_assert(prev);
>> VLC_UNUSED(prev);
>> }
>> @@ -80,7 +80,7 @@ static inline void
>vlc_atomic_rc_inc(vlc_atomic_rc_t *rc)
>> /** Decrement the RC and return true if it reaches 0 */
>> static inline bool vlc_atomic_rc_dec(vlc_atomic_rc_t *rc)
>> {
>> - unsigned prev = atomic_fetch_sub_explicit(&rc->refs, 1,
>memory_order_acq_rel);
>> + uintptr_t prev = atomic_fetch_sub_explicit(&rc->refs, 1,
>memory_order_acq_rel);
>> vlc_assert(prev);
>> return prev == 1;
>> }
>>
>_______________________________________________
>vlc-devel mailing list
>To unsubscribe or modify your subscription options:
>https://mailman.videolan.org/listinfo/vlc-devel
--
Envoyé de mon appareil Android avec Courriel K-9 Mail. Veuillez excuser ma brièveté.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/vlc-devel/attachments/20200224/7b48018b/attachment.html>
More information about the vlc-devel
mailing list