From 9219e26d4b0cc5feb3fcdd6b97803bd2713ddde1 Mon Sep 17 00:00:00 2001
From: amichelo <andrea.michelotti@lnf.infn.it>
Date: Wed, 5 Apr 2023 13:09:17 +0200
Subject: [PATCH] haskey bug

---
 chaos/common/data/CDataWrapper.cpp | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/chaos/common/data/CDataWrapper.cpp b/chaos/common/data/CDataWrapper.cpp
index 0cd8d7df1..5c809d44a 100644
--- a/chaos/common/data/CDataWrapper.cpp
+++ b/chaos/common/data/CDataWrapper.cpp
@@ -811,7 +811,13 @@ CDBufferUniquePtr CDataWrapper::getBinaryValueAsCDataBuffer(const std::string& k
 
 // check if the key is present in data wrapper
 bool CDataWrapper::hasKey(const std::string& key) const {
-  return bson_has_field(ACCESS_BSON(bson), key.c_str());
+   bson_iter_t iter;
+   bson_iter_t child;
+
+   BSON_ASSERT (bson);
+   if(key.size()==0) return false;
+  return (bson_iter_init (&iter, ACCESS_BSON(bson)) && bson_iter_find_descendant (&iter, key.c_str(), &child));
+   
 }
 
 bool CDataWrapper::isVector(const std::string& key) const {
-- 
GitLab