[vlc-devel] [PATCH 1/3] vlc_list: helpers for doubly linked lists

Rémi Denis-Courmont remi at remlab.net
Tue Jun 12 21:41:50 CEST 2018

Le tiistaina 12. kesäkuuta 2018, 14.35.02 EEST Romain Vimont a écrit :
> Anyway, my remark about the safe/unsafe version was not about
> performance, but more about passing an additional argument that could be
> avoided in most cases (a foreach with 5 arguments is quite complex to
> use).

Third and fifth arguments define what is actually iterated, and seem 
intrinsically necessary. The first argument defines a variable name and is 
necessary to avoid shadowing.

I cannot find a way to avoid the second (iterator) argument without both 
relying on UB and losing safety against element removal.

The forth argument can be avoided with typeof, but I cannot see a well-defined 
and standard-compliant alternative. Specifically
    (((char *)(&pos->member)) - ((char *)pos))
is constant but undefined if pos is not initialized or not a valid pointer. As 
far as I recall, ubsan is prone to tripping on it.

Реми Дёни-Курмон

More information about the vlc-devel mailing list