From 4041a5865cb40c20160b23ad0e6757f3fc760754 Mon Sep 17 00:00:00 2001
From: "Sven M. Hallberg" <pesco@khjk.org>
Date: Sat, 13 Apr 2013 14:42:36 +0200
Subject: [PATCH] pass rr by reference to set_rdata

---
 examples/dns.c | 44 ++++++++++++++++++++++----------------------
 1 file changed, 22 insertions(+), 22 deletions(-)

diff --git a/examples/dns.c b/examples/dns.c
index 6c572a0..7887ba6 100644
--- a/examples/dns.c
+++ b/examples/dns.c
@@ -49,40 +49,40 @@ bool validate_message(HParseResult *p) {
 ///
 
 // Helper: Parse and pack the RDATA field of a Resource Record.
-void set_rdata(struct dns_rr rr, HCountedArray *rdata) {
+void set_rdata(struct dns_rr *rr, HCountedArray *rdata) {
   uint8_t *data = h_arena_malloc(rdata->arena, sizeof(uint8_t)*rdata->used);
   for (size_t i=0; i<rdata->used; ++i)
     data[i] = H_CAST_UINT(rdata->elements[i]);
 
   // Parse RDATA if possible.
   const HParseResult *p = NULL;
-  const HParser *parser = init_rdata(rr.type);
+  const HParser *parser = init_rdata(rr->type);
   if (parser)
     p = h_parse(parser, (const uint8_t*)data, rdata->used);
 
   // If the RR doesn't parse, set its type to 0.
   if (!p) 
-    rr.type = 0;
+    rr->type = 0;
 
   // Pack the parsed rdata into rr.
-  switch(rr.type) {
-  case 1:  rr.a     = H_CAST_UINT(p->ast);             break;
-  case 2:  rr.ns    = *H_CAST(dns_domain_t,   p->ast); break;
-  case 3:  rr.md    = *H_CAST(dns_domain_t,   p->ast); break;
-  case 4:  rr.md    = *H_CAST(dns_domain_t,   p->ast); break;
-  case 5:  rr.cname = *H_CAST(dns_domain_t,   p->ast); break;
-  case 6:  rr.soa   = *H_CAST(dns_rr_soa_t,   p->ast); break;
-  case 7:  rr.mb    = *H_CAST(dns_domain_t,   p->ast); break;
-  case 8:  rr.mg    = *H_CAST(dns_domain_t,   p->ast); break;
-  case 9:  rr.mr    = *H_CAST(dns_domain_t,   p->ast); break;
-  case 10: rr.null  = *H_CAST(dns_rr_null_t,  p->ast); break;
-  case 11: rr.wks   = *H_CAST(dns_rr_wks_t,   p->ast); break;
-  case 12: rr.ptr   = *H_CAST(dns_domain_t,   p->ast); break;
-  case 13: rr.hinfo = *H_CAST(dns_rr_hinfo_t, p->ast); break;
-  case 14: rr.minfo = *H_CAST(dns_rr_minfo_t, p->ast); break;
-  case 15: rr.mx    = *H_CAST(dns_rr_mx_t,    p->ast); break;
-  case 16: rr.txt   = *H_CAST(dns_rr_txt_t,   p->ast); break;
-  default:                                             break;
+  switch(rr->type) {
+  case 1:  rr->a     = H_CAST_UINT(p->ast);             break;
+  case 2:  rr->ns    = *H_CAST(dns_domain_t,   p->ast); break;
+  case 3:  rr->md    = *H_CAST(dns_domain_t,   p->ast); break;
+  case 4:  rr->md    = *H_CAST(dns_domain_t,   p->ast); break;
+  case 5:  rr->cname = *H_CAST(dns_domain_t,   p->ast); break;
+  case 6:  rr->soa   = *H_CAST(dns_rr_soa_t,   p->ast); break;
+  case 7:  rr->mb    = *H_CAST(dns_domain_t,   p->ast); break;
+  case 8:  rr->mg    = *H_CAST(dns_domain_t,   p->ast); break;
+  case 9:  rr->mr    = *H_CAST(dns_domain_t,   p->ast); break;
+  case 10: rr->null  = *H_CAST(dns_rr_null_t,  p->ast); break;
+  case 11: rr->wks   = *H_CAST(dns_rr_wks_t,   p->ast); break;
+  case 12: rr->ptr   = *H_CAST(dns_domain_t,   p->ast); break;
+  case 13: rr->hinfo = *H_CAST(dns_rr_hinfo_t, p->ast); break;
+  case 14: rr->minfo = *H_CAST(dns_rr_minfo_t, p->ast); break;
+  case 15: rr->mx    = *H_CAST(dns_rr_mx_t,    p->ast); break;
+  case 16: rr->txt   = *H_CAST(dns_rr_txt_t,   p->ast); break;
+  default:                                              break;
   }
 }
 
@@ -131,7 +131,7 @@ const HParsedToken* act_rr(const HParseResult *p) {
   rr->rdlength = H_FIELD_SEQ(4)->used;
 
   // Parse and pack RDATA.
-  set_rdata(*rr, H_FIELD_SEQ(4));
+  set_rdata(rr, H_FIELD_SEQ(4));
 
   return H_MAKE(dns_rr_t, rr);
 }
-- 
GitLab