From 00da6b5977574a0564169172227d8aab45be188f Mon Sep 17 00:00:00 2001 From: Ben Longbons Date: Sat, 3 Jan 2015 21:07:56 -0800 Subject: Switch MATCH to separate begin/end macros The for loop trick turned out to be very prone to infinite loops at runtime. It's better to force compiler errors even if it's ugly. --- src/generic/db.hpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src/generic/db.hpp') diff --git a/src/generic/db.hpp b/src/generic/db.hpp index b0dcf0c..04ead79 100644 --- a/src/generic/db.hpp +++ b/src/generic/db.hpp @@ -115,10 +115,11 @@ public: V get(const K& k) { Option> vp = impl.search(k); - if OPTION_IS_SOME_NOLOOP(v, vp) + OMATCH_BEGIN_SOME (v, vp) { return *v; } + OMATCH_END (); return V(); } void put(const K& k, V v) @@ -162,10 +163,11 @@ public: Option> get(const K& k) { Option> up = impl.search(k); - if OPTION_IS_SOME_NOLOOP(u, up) + OMATCH_BEGIN_SOME (u, up) { return Some(borrow(*u->get())); } + OMATCH_END (); return None; } void put(const K& k, U v) -- cgit v1.2.3-60-g2f50