ovsdb-idlc: Fix memory leak in "optional bool" columns.
authorBen Pfaff <blp@nicira.com>
Thu, 22 Mar 2012 20:24:23 +0000 (13:24 -0700)
committerBen Pfaff <blp@nicira.com>
Fri, 23 Mar 2012 17:19:05 +0000 (10:19 -0700)
Commit 1bf2c9096858 (idl: Generalize special case boolean exception.)
changed the IDL to do dynamic allocation with (x)malloc() for optional
booleans, but it didn't add the corresponding calls to free().  This
commit fixes the problem.

Bug #10357.
Reported-by: Paul Ingram <paul@nicira.com>
Reported-by: Krishna Miriyala <krishna@nicira.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
ovsdb/ovsdb-idlc.in

index 089bc23..4fd741f 100755 (executable)
@@ -305,15 +305,7 @@ static void
         # Unparse functions.
         for columnName, column in sorted(table.columns.iteritems()):
             type = column.type
-            if (type.key.type == ovs.db.types.BooleanType and not type.value
-                and type.n_min == 0 and type.n_max == 1):
-                print '''
-static void
-%(s)s_unparse_%(c)s(struct ovsdb_idl_row *row OVS_UNUSED)
-{
-    /* Nothing to do. */
-}''' % {'s': structName, 'c': columnName}
-            elif (type.n_min != 1 or type.n_max != 1) and not type.is_optional_pointer():
+            if (type.n_min != 1 or type.n_max != 1) and not type.is_optional_pointer():
                 print '''
 static void
 %(s)s_unparse_%(c)s(struct ovsdb_idl_row *row_)