]> git.puffer.fish Git - matthieu/frr.git/commitdiff
bgpd: use on stack struct attr_extra in bgp_attr_unintern()
authorJorge Boncompte [DTI2] <jorge@dti2.net>
Mon, 7 May 2012 16:53:01 +0000 (16:53 +0000)
committerDavid Lamparter <equinox@opensourcerouting.org>
Tue, 22 May 2012 18:25:49 +0000 (20:25 +0200)
  Reduce memory heap fragmentation and pressure on the memory allocator.

Signed-off-by: Jorge Boncompte [DTI2] <jorge@dti2.net>
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
bgpd/bgp_attr.c

index 974978210e8fa90c3175e566d256eb6665363482..b63ac4c804445abe018abb2ef852c42eb66a0081 100644 (file)
@@ -657,6 +657,7 @@ bgp_attr_unintern (struct attr **pattr)
   struct attr *attr = *pattr;
   struct attr *ret;
   struct attr tmp;
+  struct attr_extra tmp_extra;
   
   /* Decrement attribute reference. */
   attr->refcnt--;
@@ -665,7 +666,7 @@ bgp_attr_unintern (struct attr **pattr)
   
   if (attr->extra)
     {
-      tmp.extra = bgp_attr_extra_new ();
+      tmp.extra = &tmp_extra;
       memcpy (tmp.extra, attr->extra, sizeof (struct attr_extra));
     }
   
@@ -680,7 +681,6 @@ bgp_attr_unintern (struct attr **pattr)
     }
 
   bgp_attr_unintern_sub (&tmp);
-  bgp_attr_extra_free (&tmp);
 }
 
 void