From 895b186c0273146ac915d855214e98e07f54de65 Mon Sep 17 00:00:00 2001 From: Rusty Wagner Date: Mon, 30 Jan 2023 13:16:38 -0500 Subject: Fix crash on Get of nonexistant metadata --- metadata.cpp | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) (limited to 'metadata.cpp') diff --git a/metadata.cpp b/metadata.cpp index c52f6dd1..253d03de 100644 --- a/metadata.cpp +++ b/metadata.cpp @@ -132,22 +132,34 @@ bool Metadata::operator==(const Metadata& rhs) Ref Metadata::operator[](const std::string& key) { - return new Metadata(BNMetadataGetForKey(m_object, key.c_str())); + auto result = BNMetadataGetForKey(m_object, key.c_str()); + if (!result) + return nullptr; + return new Metadata(result); } Ref Metadata::operator[](size_t idx) { - return new Metadata(BNMetadataGetForIndex(m_object, idx)); + auto result = BNMetadataGetForIndex(m_object, idx); + if (!result) + return nullptr; + return new Metadata(result); } Ref Metadata::Get(const std::string& key) { - return new Metadata(BNMetadataGetForKey(m_object, key.c_str())); + auto result = BNMetadataGetForKey(m_object, key.c_str()); + if (!result) + return nullptr; + return new Metadata(result); } Ref Metadata::Get(size_t index) { - return new Metadata(BNMetadataGetForIndex(m_object, index)); + auto result = BNMetadataGetForIndex(m_object, index); + if (!result) + return nullptr; + return new Metadata(result); } bool Metadata::SetValueForKey(const string& key, Ref data) -- cgit v1.3.1