ofproto: Make ofproto_rule_destroy__() do nothing for a null argument.
authorBen Pfaff <blp@nicira.com>
Tue, 3 Jan 2012 18:16:15 +0000 (10:16 -0800)
committerBen Pfaff <blp@nicira.com>
Wed, 1 Feb 2012 22:15:15 +0000 (14:15 -0800)
This is our customary way to implement a "destroy" function.  It allows
a minor simplification in ofoperation_complete().

Signed-off-by: Ben Pfaff <blp@nicira.com>
ofproto/ofproto.c

index 465704b6bc2aa849f51fe325f185af804c080741..3dab46a4ea3b7e8f1959cadab5b3e0653eb70a35 100644 (file)
@@ -1655,8 +1655,10 @@ set_internal_devs_mtu(struct ofproto *p)
 static void
 ofproto_rule_destroy__(struct rule *rule)
 {
-    free(rule->actions);
-    rule->ofproto->ofproto_class->rule_dealloc(rule);
+    if (rule) {
+        free(rule->actions);
+        rule->ofproto->ofproto_class->rule_dealloc(rule);
+    }
 }
 
 /* This function allows an ofproto implementation to destroy any rules that
@@ -3284,9 +3286,7 @@ ofoperation_complete(struct ofoperation *op, enum ofperr error)
     switch (op->type) {
     case OFOPERATION_ADD:
         if (!error) {
-            if (op->victim) {
-                ofproto_rule_destroy__(op->victim);
-            }
+            ofproto_rule_destroy__(op->victim);
             if ((rule->cr.wc.vlan_tci_mask & htons(VLAN_VID_MASK))
                 == htons(VLAN_VID_MASK)) {
                 if (ofproto->vlan_bitmap) {