diff --git a/rjp++/include/object.hpp b/rjp++/include/object.hpp index 77af75d..23b80d7 100644 --- a/rjp++/include/object.hpp +++ b/rjp++/include/object.hpp @@ -134,7 +134,7 @@ namespace rjp{ const_iterator begin(void)const; iterator end(void)const; - value search(const rexy::string_base& key); + value search(const rexy::string_base& key)const; private: RJP_value* add_member_impl(const rexy::string_base& key); diff --git a/rjp++/src/array.cpp b/rjp++/src/array.cpp index fabce9c..85adf7e 100644 --- a/rjp++/src/array.cpp +++ b/rjp++/src/array.cpp @@ -27,12 +27,16 @@ namespace rjp{ array::array(const value& val): value(val) { + if(!m_value) + return; if(rjp_value_type(m_value) != rjp_json_array) rjp_set_array(m_value); } array::array(value&& val): value(std::move(val)) { + if(!m_value) + return; if(rjp_value_type(m_value) != rjp_json_array) rjp_set_array(m_value); } diff --git a/rjp++/src/integral.cpp b/rjp++/src/integral.cpp index 95b48ff..88bed89 100644 --- a/rjp++/src/integral.cpp +++ b/rjp++/src/integral.cpp @@ -29,12 +29,16 @@ namespace rjp{ integer::integer(const value& val): value(val) { + if(!m_value) + return; if(rjp_value_type(m_value) != rjp_json_integer) rjp_set_int(m_value, rjp_get_int(val.raw())); } integer::integer(value&& val): value(std::move(val)) { + if(!m_value) + return; if(rjp_value_type(m_value) != rjp_json_integer) rjp_set_int(m_value, rjp_get_int(m_value)); } @@ -62,12 +66,16 @@ namespace rjp{ dfloat::dfloat(const value& val): value(val) { + if(!m_value) + return; if(rjp_value_type(m_value) != rjp_json_dfloat) rjp_set_float(m_value, rjp_get_float(val.raw())); } dfloat::dfloat(value&& val): value(std::move(val)) { + if(!m_value) + return; if(rjp_value_type(m_value) != rjp_json_dfloat) rjp_set_float(m_value, rjp_get_float(m_value)); } @@ -96,12 +104,16 @@ namespace rjp{ boolean::boolean(const value& val): value(val) { + if(!m_value) + return; if(rjp_value_type(m_value) != rjp_json_boolean) rjp_set_bool(m_value, rjp_get_bool(val.raw())); } boolean::boolean(value&& val): value(std::move(val)) { + if(!m_value) + return; if(rjp_value_type(m_value) != rjp_json_boolean) rjp_set_bool(m_value, rjp_get_bool(m_value)); } @@ -128,6 +140,8 @@ namespace rjp{ null::null(const value& val): value(val) { + if(!m_value) + return; rjp_set_null(m_value); } null::null(value&& val): diff --git a/rjp++/src/object.cpp b/rjp++/src/object.cpp index edf66d4..51a6f12 100644 --- a/rjp++/src/object.cpp +++ b/rjp++/src/object.cpp @@ -26,12 +26,16 @@ namespace rjp{ object::object(const value& val): value(val) { + if(!m_value) + return; if(rjp_value_type(m_value) != rjp_json_object) rjp_set_object(m_value); } object::object(value&& val): value(std::move(val)) { + if(!m_value) + return; if(rjp_value_type(m_value) != rjp_json_object) rjp_set_object(m_value); } @@ -118,7 +122,7 @@ namespace rjp{ object::iterator object::end(void)const{ return iterator(); } - value object::search(const rexy::string_base& key){ + value object::search(const rexy::string_base& key)const{ RJP_value* result = rjp_search_member(m_value, key.get()); return create_unmanaged(result); } diff --git a/rjp++/src/string_val.cpp b/rjp++/src/string_val.cpp index a82f2b3..0200931 100644 --- a/rjp++/src/string_val.cpp +++ b/rjp++/src/string_val.cpp @@ -34,12 +34,16 @@ namespace rjp{ string_val::string_val(const value& val): value(val) { + if(!m_value) + return; if(rjp_value_type(m_value) != rjp_json_string) rjp_set_string(m_value, "", 0); } string_val::string_val(value&& val): value(std::move(val)) { + if(!m_value) + return; if(rjp_value_type(m_value) != rjp_json_string) rjp_set_string(m_value, "", 0); }