In update_external_font_keys(), remove the fonts from the registry
immediately after we mark them for deletion, and then proceed to add or
update values in the registry.
This prevents a font from being marked as deleted, then being updated in
the registry, and then removed from the registry regardless. When this
happened, the registry would not contain the value for this font that we
intended to update it with. This function would need to run again for
this value to be added to the registry, but since this function runs
during initialization, this means that a subsequent launch of wine was
necessary. By removing the old value from the registry first, and then
adding the new one, the initialization process becomes idempotent
starting from the first run.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5684
On Sat May 18 08:22:49 2024 +0000, Piotr Caban wrote:
> Did you consider changing `get_args` prototype to something like:
> `static char* get_args(struct parsed_symbol* sym, BOOL func)`? I think
> that `z_term` argument name is not very descriptive. `open_char` and
> `close_char` seems to be redundant.
yes I thought about it (with same reasoning as yours). Didn't do it at once because I wondered where to put the open/closing argument (keep it inside get_args() as it is today or move it to caller site) and I wanted to cover the throw clauses that we don't handle yet first (to check the impacts -if any- in handling of end of parameters' type list marker).
will include in next round if it fits well.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5675#note_70879