Avoid sparse error or warning for sizeof(_Bool).
authorBen Pfaff <blp@nicira.com>
Thu, 12 May 2011 20:46:16 +0000 (13:46 -0700)
committerBen Pfaff <blp@nicira.com>
Mon, 23 May 2011 19:14:12 +0000 (12:14 -0700)
commit7fae24e67c95b1dbe93497135ae533e39b61e110
tree8ff59d8cb99acb5cf4b8a3e3bf58c38208bf4233
parent7fb563b94c6b265f5dae9965fe33392716a7886e
Avoid sparse error or warning for sizeof(_Bool).

The sparse checker does not like taking sizeof(_Bool).  Older versions of
sparse output a hard error ("error: cannot size expression").  Newer
versions output a warning ("warning: expression using sizeof bool").  This
commit avoids the problem by not using sizeof(_Bool) anywhere.

The only place where OVS uses sizeof(_Bool) anyway is in code generated by
the OVSDB IDL.  It generates it for populating "optional bool" columns in
the database, that is, columns that are allowed to contain 0 or 1 instances
of a bool.  For these columns, it generates code that looks roughly like
this:
    row->column = xmalloc(sizeof *row->column);
    *row->column = value;
This commit changes these columns from type "bool *" to type "const bool *"
and changes the generated code to:
    static const bool true_value = true;
    static const bool false_value = false;

    row->column = value ? &true_value : &false_value;
which avoids the problem and saves a malloc() call at the same time.

The idltest code had a column with a slightly different type ("0, 1, or
2 bools") that didn't fit the revised pattern and is a fairly stupid type
anyhow, so I just changed it to "0 or 1 bools".
ovsdb/ovsdb-idlc.in
tests/idltest.ovsschema
tests/ovsdb-idl-py.at
tests/ovsdb-idl.at
vswitchd/vswitch.pic