From: Vsevolod Stakhov Date: Fri, 24 Jun 2022 21:06:44 +0000 (+0100) Subject: Revert "[Minor] Simplify code" X-Git-Tag: 3.3~176 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=8242b83858ffd36337e01b43808ee4f2eade1b9e;p=thirdparty%2Frspamd.git Revert "[Minor] Simplify code" It seems that safety guarantees as defined by standard apply merely to the values but not to the keys. So revert to a more ugly approach unless there is a better way to do `try_emplace` with move only key. This reverts commit 8bb63981133b479dcaf24b9d34d43993c1b732c8. --- diff --git a/src/libserver/css/css.cxx b/src/libserver/css/css.cxx index 8958531329..9e26eb42f8 100644 --- a/src/libserver/css/css.cxx +++ b/src/libserver/css/css.cxx @@ -78,10 +78,13 @@ css_style_sheet::add_selector_rule(std::unique_ptr &&selector, } if (target_hash) { + auto found_it = target_hash->find(selector); - auto [found_it, found] = target_hash->try_emplace(std::move(selector), decls); - - if (found) { + if (found_it == target_hash->end()) { + /* Easy case, new element */ + target_hash->insert({std::move(selector), decls}); + } + else { /* The problem with merging is actually in how to handle selectors chains * For example, we have 2 selectors: * 1. class id tag -> meaning that we first match class, then we ensure that