commit 8242b83: Revert "[Minor] Simplify code"

Vsevolod Stakhov vsevolod at rspamd.com
Fri Jun 24 21:14:03 UTC 2022


Author: Vsevolod Stakhov
Date: 2022-06-24 22:06:44 +0100
URL: https://github.com/rspamd/rspamd/commit/8242b83858ffd36337e01b43808ee4f2eade1b9e (HEAD -> master)

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.

---
 src/libserver/css/css.cxx | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/src/libserver/css/css.cxx b/src/libserver/css/css.cxx
index 895853132..9e26eb42f 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<css_selector> &&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


More information about the Commits mailing list