{
fr_edit_t *e;
- if (!el) return 0;
+ fr_assert(el != NULL);
for (e = fr_dlist_head(&el->list);
e != NULL;
{
fr_pair_t *prev, *vp;
- if (!el) return 0;
-
prev = pos;
+ if (!el) {
+ /*
+ * @todo - this should really be an O(1) dlist
+ * operation.
+ */
+ while ((vp = fr_pair_list_head(to_insert)) != NULL) {
+ (void) fr_pair_remove(to_insert, vp);
+ (void) fr_pair_insert_after(list, prev, vp);
+ prev = vp;
+ }
+
+ return 0;
+ }
+
/*
* We have to record each individual insert as a separate
* item. Some later edit may insert pairs in the middle