From 13ece9e5596de82261d10647a92a7522c6255884 Mon Sep 17 00:00:00 2001
From: Jan Kadlec <jan.kadlec@nic.cz>
Date: Mon, 24 Mar 2014 14:30:45 +0100
Subject: [PATCH] new_node: store additionals directly into rr_data structure.

---
 src/knot/zone/zone-contents.c | 14 +++++---------
 1 file changed, 5 insertions(+), 9 deletions(-)

diff --git a/src/knot/zone/zone-contents.c b/src/knot/zone/zone-contents.c
index 88dc77b951..47b6507977 100644
--- a/src/knot/zone/zone-contents.c
+++ b/src/knot/zone/zone-contents.c
@@ -153,8 +153,7 @@ static int knot_zone_contents_nsec3_name(const knot_zone_contents_t *zone,
 
 /*! \brief Link pointers to additional nodes for this RRSet. */
 static int discover_additionals(struct rr_data *rr_data,
-                                knot_zone_contents_t *zone,
-                                knot_node_t ***additional)
+                                knot_zone_contents_t *zone)
 {
 	const knot_node_t *node = NULL, *encloser = NULL, *prev = NULL;
 	const knot_dname_t *dname = NULL;
@@ -162,8 +161,8 @@ static int discover_additionals(struct rr_data *rr_data,
 
 	/* Create new additional nodes. */
 	uint16_t rdcount = rrs->rr_count;
-	*additional = malloc(rdcount * sizeof(knot_node_t *));
-	if (*additional == NULL) {
+	rr_data->additional = malloc(rdcount * sizeof(knot_node_t *));
+	if (rr_data->additional == NULL) {
 		ERR_ALLOC_FAILED;
 		return KNOT_ENOMEM;
 	}
@@ -178,7 +177,7 @@ static int discover_additionals(struct rr_data *rr_data,
 			node = encloser->wildcard_child;
 		}
 		
-		(*additional)[i] = (knot_node_t *)node;
+		rr_data->additional[i] = (knot_node_t *)node;
 	}
 
 	return KNOT_EOK;
@@ -334,13 +333,10 @@ static int adjust_additional(knot_node_t **tnode, void *data)
 	for(uint16_t i = 0; i < node->rrset_count; ++i) {
 		struct rr_data *rr_data = &node->rrs[i];
 		if (rrset_additional_needed(rr_data->type)) {
-			knot_node_t **additional = NULL;
-			ret = discover_additionals(rr_data, args->zone,
-			                           &additional);
+			ret = discover_additionals(rr_data, args->zone);
 			if (ret != KNOT_EOK) {
 				break;
 			}
-			rr_data->additional = additional;
 		}
 	}
 
-- 
GitLab