forked from xiaozhi/xiaozhi-esp32
修复param.required()==false时可能触发未定义的问题 (#705)
This commit is contained in:
@@ -64,11 +64,18 @@ void Thing::Invoke(const cJSON* command) {
|
|||||||
throw std::runtime_error("Parameter " + param.name() + " is required");
|
throw std::runtime_error("Parameter " + param.name() + " is required");
|
||||||
}
|
}
|
||||||
if (param.type() == kValueTypeNumber) {
|
if (param.type() == kValueTypeNumber) {
|
||||||
param.set_number(input_param->valueint);
|
if (cJSON_IsNumber(input_param)) {
|
||||||
|
param.set_number(input_param->valueint);
|
||||||
|
}
|
||||||
} else if (param.type() == kValueTypeString) {
|
} else if (param.type() == kValueTypeString) {
|
||||||
param.set_string(input_param->valuestring);
|
if (cJSON_IsString(input_param) || cJSON_IsObject(input_param) || cJSON_IsArray(input_param)) {
|
||||||
|
std::string value_str = input_param->valuestring;
|
||||||
|
param.set_string(value_str);
|
||||||
|
}
|
||||||
} else if (param.type() == kValueTypeBoolean) {
|
} else if (param.type() == kValueTypeBoolean) {
|
||||||
param.set_boolean(input_param->valueint == 1);
|
if (cJSON_IsBool(input_param)) {
|
||||||
|
param.set_boolean(input_param->valueint == 1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user