misc: when free:ing tll lists, prefer tll_remove() over tll_free()

In many places we have the following pattern:

  tll_foreach(list, it)
     free(it->item.thing);
  tll_free(list);

Since all tll functions are macros, and thus inlined, and since
tll_free in itself expands to a tll_foreach(), the above pattern
expands to more native code than necessary.

This is somewhat smaller:

  tll_foreach(list, it) {
      free(it->item.thing);
      tll_remove(list, it);
  }
This commit is contained in:
Daniel Eklöf 2021-02-07 14:52:04 +01:00
parent 63a50afc8e
commit 4bad85b593
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
4 changed files with 36 additions and 25 deletions

View file

@ -540,15 +540,15 @@ urls_reset(struct terminal *term)
wl_subsurface_destroy(it->item.sub_surf);
if (it->item.surf != NULL)
wl_surface_destroy(it->item.surf);
tll_remove(term->window->urls, it);
}
tll_free(term->window->urls);
}
tll_foreach(term->urls, it) {
tag_cells_for_url(term, &it->item, false);
url_destroy(&it->item);
tll_remove(term->urls, it);
}
tll_free(term->urls);
memset(term->url_keys, 0, sizeof(term->url_keys));
render_refresh(term);