diff --git a/lib/isccfg/parser.c b/lib/isccfg/parser.c index e3a4ddd9eb..edc6f5bffe 100644 --- a/lib/isccfg/parser.c +++ b/lib/isccfg/parser.c @@ -243,7 +243,7 @@ cfg_printx(const cfg_obj_t *obj, unsigned int flags, isc_result_t cfg_create_tuple(cfg_parser_t *pctx, const cfg_type_t *type, cfg_obj_t **ret) { isc_result_t result; - const cfg_tuplefielddef_t *fields = type->of; + const cfg_tuplefielddef_t *fields; const cfg_tuplefielddef_t *f; cfg_obj_t *obj = NULL; unsigned int nfields = 0; @@ -253,6 +253,8 @@ cfg_create_tuple(cfg_parser_t *pctx, const cfg_type_t *type, cfg_obj_t **ret) { REQUIRE(type != NULL); REQUIRE(ret != NULL && *ret == NULL); + fields = type->of; + for (f = fields; f->name != NULL; f++) nfields++; @@ -278,7 +280,7 @@ isc_result_t cfg_parse_tuple(cfg_parser_t *pctx, const cfg_type_t *type, cfg_obj_t **ret) { isc_result_t result; - const cfg_tuplefielddef_t *fields = type->of; + const cfg_tuplefielddef_t *fields; const cfg_tuplefielddef_t *f; cfg_obj_t *obj = NULL; unsigned int i; @@ -287,6 +289,8 @@ cfg_parse_tuple(cfg_parser_t *pctx, const cfg_type_t *type, cfg_obj_t **ret) REQUIRE(type != NULL); REQUIRE(ret != NULL && *ret == NULL); + fields = type->of; + CHECK(cfg_create_tuple(pctx, type, &obj)); for (f = fields, i = 0; f->name != NULL; f++, i++) CHECK(cfg_parse_obj(pctx, f->type, &obj->value.tuple[i])); @@ -1795,13 +1799,15 @@ cfg_parse_spacelist(cfg_parser_t *pctx, const cfg_type_t *listtype, cfg_obj_t **ret) { cfg_obj_t *listobj = NULL; - const cfg_type_t *listof = listtype->of; + const cfg_type_t *listof; isc_result_t result; REQUIRE(pctx != NULL); REQUIRE(listtype != NULL); REQUIRE(ret != NULL && *ret == NULL); + listof = listtype->of; + CHECK(cfg_create_list(pctx, listtype, &listobj)); for (;;) { @@ -1905,7 +1911,7 @@ cfg_listelt_value(const cfg_listelt_t *elt) { isc_result_t cfg_parse_mapbody(cfg_parser_t *pctx, const cfg_type_t *type, cfg_obj_t **ret) { - const cfg_clausedef_t * const *clausesets = type->of; + const cfg_clausedef_t * const *clausesets; isc_result_t result; const cfg_clausedef_t * const *clauseset; const cfg_clausedef_t *clause; @@ -1920,6 +1926,8 @@ cfg_parse_mapbody(cfg_parser_t *pctx, const cfg_type_t *type, cfg_obj_t **ret) REQUIRE(type != NULL); REQUIRE(ret != NULL && *ret == NULL); + clausesets = type->of; + CHECK(create_map(pctx, type, &obj)); obj->value.map.clausesets = clausesets; @@ -3019,12 +3027,14 @@ cfg_print_sockaddr(cfg_printer_t *pctx, const cfg_obj_t *obj) { void cfg_doc_sockaddr(cfg_printer_t *pctx, const cfg_type_t *type) { - const unsigned int *flagp = type->of; + const unsigned int *flagp; int n = 0; REQUIRE(pctx != NULL); REQUIRE(type != NULL); + flagp = type->of; + cfg_print_cstr(pctx, "( "); if ((*flagp & CFG_ADDR_V4OK) != 0) { cfg_print_cstr(pctx, "");