[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