mirror of
https://github.com/subsurface/subsurface.git
synced 2024-12-11 03:21:29 +00:00
27d7f27409
The comment said "Clear everything but the first element" but actually the macro freed the whole list including the first element. For dive computers it was explicitly called on the second element. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
29 lines
983 B
C
29 lines
983 B
C
// SPDX-License-Identifier: GPL-2.0
|
|
#ifndef STRUCTURED_LIST_H
|
|
#define STRUCTURED_LIST_H
|
|
|
|
/* Clear whole list; this works for taglist, picturelist and dive computers */
|
|
#define STRUCTURED_LIST_FREE(_type, _start, _free) \
|
|
{ \
|
|
_type *_ptr = _start; \
|
|
while (_ptr) { \
|
|
_type *_next = _ptr->next; \
|
|
_free(_ptr); \
|
|
_ptr = _next; \
|
|
} \
|
|
}
|
|
|
|
#define STRUCTURED_LIST_COPY(_type, _first, _dest, _cpy) \
|
|
{ \
|
|
_type *_sptr = _first; \
|
|
_type **_dptr = &_dest; \
|
|
while (_sptr) { \
|
|
*_dptr = malloc(sizeof(_type)); \
|
|
_cpy(_sptr, *_dptr); \
|
|
_sptr = _sptr->next; \
|
|
_dptr = &(*_dptr)->next; \
|
|
} \
|
|
*_dptr = 0; \
|
|
}
|
|
|
|
#endif
|