| 4963 | if (!tag_end) { |
| 4964 | free(name); |
| 4965 | buf_free(&args); |
| 4966 | return false; |
| 4967 | } |
| 4968 | tag = xstrndup(p, (size_t)(tag_end - p + 1)); |
| 4969 | char *param_name = dsml_attr(tag, "name"); |
| 4970 | char *param_is_string = dsml_attr(tag, "string"); |
| 4971 | free(tag); |
| 4972 | if (!param_name) { |
| 4973 | free(name); |
| 4974 | free(param_name); |
| 4975 | free(param_is_string); |
| 4976 | buf_free(&args); |
| 4977 | return false; |
| 4978 | } |
| 4979 | const char *value_start = tag_end + 1; |
| 4980 | if (!param_is_string && |
| 4981 | !strncmp(skip_ascii_ws(value_start), param_start, strlen(param_start))) |
| 4982 | { |
| 4983 | buf nested = {0}; |
| 4984 | const char *nested_p = value_start; |
| 4985 | if (!dsml_parse_nested_params_object(&nested_p, param_start, |
| 4986 | param_end, &nested)) { |
| 4987 | free(name); |
| 4988 | free(param_name); |
| 4989 | buf_free(&nested); |
no test coverage detected