diff --git a/src/Value.cpp b/src/Value.cpp index 7cf09eb848..ae7c966b55 100644 --- a/src/Value.cpp +++ b/src/Value.cpp @@ -81,7 +81,7 @@ std::shared_ptr Value::MakeStringArray( } void nt::ConvertToC(const Value& in, NT_Value* out) { - NT_DisposeValue(out); + out->type = NT_UNASSIGNED; switch (in.type()) { case NT_UNASSIGNED: return; @@ -92,15 +92,12 @@ void nt::ConvertToC(const Value& in, NT_Value* out) { out->data.v_double = in.GetDouble(); break; case NT_STRING: - NT_InitString(&out->data.v_string); ConvertToC(in.GetString(), &out->data.v_string); break; case NT_RAW: - NT_InitString(&out->data.v_raw); ConvertToC(in.GetRaw(), &out->data.v_raw); break; case NT_RPC: - NT_InitString(&out->data.v_raw); ConvertToC(in.GetRpc(), &out->data.v_raw); break; case NT_BOOLEAN_ARRAY: { @@ -123,10 +120,8 @@ void nt::ConvertToC(const Value& in, NT_Value* out) { auto v = in.GetStringArray(); out->data.arr_string.arr = static_cast(std::malloc(v.size()*sizeof(NT_String))); - for (size_t i=0; idata.arr_string.arr[i]); + for (size_t i = 0; i < v.size(); ++i) ConvertToC(v[i], &out->data.arr_string.arr[i]); - } out->data.arr_string.size = v.size(); break; } @@ -138,7 +133,6 @@ void nt::ConvertToC(const Value& in, NT_Value* out) { } void nt::ConvertToC(llvm::StringRef in, NT_String* out) { - NT_DisposeString(out); out->len = in.size(); out->str = static_cast(std::malloc(in.size()+1)); std::memcpy(out->str, in.data(), in.size()); diff --git a/src/ntcore_c.cpp b/src/ntcore_c.cpp index b53b2b48fc..9391090f6b 100644 --- a/src/ntcore_c.cpp +++ b/src/ntcore_c.cpp @@ -39,7 +39,6 @@ static void ConvertToC(const ConnectionInfo& in, NT_ConnectionInfo* out) { static void ConvertToC(const RpcParamDef& in, NT_RpcParamDef* out) { ConvertToC(in.name, &out->name); - NT_InitValue(&out->def_value); ConvertToC(*in.def_value, &out->def_value); } @@ -297,7 +296,6 @@ NT_Value **NT_UnpackRpcValues(const char *packed, size_t packed_len, std::malloc(values_v.size() * sizeof(NT_Value*))); for (size_t i = 0; i < values_v.size(); ++i) { values[i] = static_cast(std::malloc(sizeof(NT_Value))); - NT_InitValue(values[i]); ConvertToC(*values_v[i], values[i]); } return values;