diff --git a/include/uzuki2/parse_json.hpp b/include/uzuki2/parse_json.hpp index 060a3da..2dde78c 100644 --- a/include/uzuki2/parse_json.hpp +++ b/include/uzuki2/parse_json.hpp @@ -234,7 +234,8 @@ std::shared_ptr parse_object(const millijson::Base* contents, Externals& e } } - const auto& lvals = extract_array(map, "levels", path); + const std::string levels_name = "levels"; // avoid dangling reference from casting of string literal. + const auto& lvals = extract_array(map, levels_name, path); int32_t nlevels = lvals.size(); auto fptr = process_array_or_scalar_values(map, path, [&](const auto& vals, bool named, bool scalar) -> auto { auto ptr = Provisioner::new_Factor(vals.size(), named, scalar, nlevels, ordered); @@ -365,7 +366,8 @@ std::shared_ptr parse_object(const millijson::Base* contents, Externals& e auto names_ptr = has_names(map, path); bool has_names = names_ptr != NULL; - const auto& vals = extract_array(map, "values", path); + const std::string values_name = "values"; // avoid dangling reference from casting of string literal. + const auto& vals = extract_array(map, values_name, path); auto ptr = Provisioner::new_List(vals.size(), has_names); output.reset(ptr);