*
* @hidecallergraph
*/
-static inline void * CC_HINT(hot) fr_dcursor_next(fr_dcursor_t *cursor)
+static inline void * fr_dcursor_next(fr_dcursor_t *cursor)
{
if (!cursor || fr_dlist_empty(cursor->dlist)) return NULL;
cursor->current = dcursor_next(cursor, cursor->current);
*
* @hidecallergraph
*/
-static inline void * CC_HINT(hot) fr_dcursor_current(fr_dcursor_t *cursor)
+static inline void * fr_dcursor_current(fr_dcursor_t *cursor)
{
if (unlikely(!cursor)) return NULL;
*
* @hidecallergraph
*/
-static inline void * CC_HINT(hot) fr_dcursor_set_current(fr_dcursor_t *cursor, void *item)
+static inline void * fr_dcursor_set_current(fr_dcursor_t *cursor, void *item)
{
- if (!cursor || fr_dlist_empty(cursor->dlist)) return NULL;
+ if (!fr_cond_assert_msg(!cursor->is_const, "attempting to modify const list")) return NULL;
+
+ if (fr_dlist_empty(cursor->dlist)) return NULL;
if (!item) return NULL;
cursor->current = item;
*
* @hidecallergraph
*/
-static inline void CC_HINT(hot) fr_dcursor_prepend(fr_dcursor_t *cursor, void *v)
+static inline void fr_dcursor_prepend(fr_dcursor_t *cursor, void *v)
{
+ if (!fr_cond_assert_msg(!cursor->is_const, "attempting to modify const list")) return;
+
#ifndef TALLOC_GET_TYPE_ABORT_NOOP
if (cursor->dlist->type) _talloc_get_type_abort(v, cursor->dlist->type, __location__);
#endif
*
* @hidecallergraph
*/
-static inline void CC_HINT(hot) fr_dcursor_append(fr_dcursor_t *cursor, void *v)
+static inline void fr_dcursor_append(fr_dcursor_t *cursor, void *v)
{
+ if (!fr_cond_assert_msg(!cursor->is_const, "attempting to modify const list")) return;
+
#ifndef TALLOC_GET_TYPE_ABORT_NOOP
if (cursor->dlist->type) _talloc_get_type_abort(v, cursor->dlist->type, __location__);
#endif
*/
static inline void fr_dcursor_insert(fr_dcursor_t *cursor, void *v)
{
+ if (!fr_cond_assert_msg(!cursor->is_const, "attempting to modify const list")) return;
+
#ifndef TALLOC_GET_TYPE_ABORT_NOOP
if (cursor->dlist->type) _talloc_get_type_abort(v, cursor->dlist->type, __location__);
#endif
*
* @hidecallergraph
*/
-static inline void * CC_HINT(hot) fr_dcursor_remove(fr_dcursor_t *cursor)
+static inline void * fr_dcursor_remove(fr_dcursor_t *cursor)
{
void *v, *p;
+ if (!fr_cond_assert_msg(!cursor->is_const, "attempting to modify const list")) return NULL;
+
if (!cursor->current) return NULL; /* don't do anything fancy, it's just a noop */
v = cursor->current;
{
void *v, *p;
+ if (!fr_cond_assert_msg(!cursor->is_const, "dst list in merge is const")) return;
+ if (!fr_cond_assert_msg(!to_append->is_const, "src list in merge is const")) return;
+
p = cursor->current;
while ((v = fr_dcursor_remove(to_append))) {
fr_dcursor_insert(cursor, v);
*
* @hidecallergraph
*/
-static inline void * CC_HINT(hot) fr_dcursor_replace(fr_dcursor_t *cursor, void *r)
+static inline void * fr_dcursor_replace(fr_dcursor_t *cursor, void *r)
{
void *v, *p;
+ if (!fr_cond_assert_msg(!cursor->is_const, "attempting to modify const list")) return NULL;
+
/*
* Correct behaviour here is debatable
*/