• A
    util: Turn virFirewallAddRule() into a macro · b9cc2483
    Andrea Bolognani 提交于
    Clang 3.9 refuses to compile the existing code with the
    following error:
    
      util/virfirewall.c:425:20: error: passing an object that undergoes
                                 default argument promotion to 'va_start'
                                 has undefined behavior [-Werror,-Wvarargs]
          va_start(args, layer);
                         ^
      util/virfirewall.c:420:37: note: parameter of type 'virFirewallLayer'
                                 is declared here
                         virFirewallLayer layer,
                                          ^
    
    This happens because 'layer' is of type virFirewallLayer, which
    is an enum type and not a standard type such as eg. void* or int.
    
    To solve the issue, turn virFirewallAddRule() from a very thin
    wrapper around virFirewallAddRuleFullV() to a macro that expands
    to a call to virFirewallAddRuleFull() - itself a very thin wrapper
    around the aforementioned virFirewallAddRuleFullV() - with no loss
    of functionality or type safety.
    b9cc2483
virfirewall.h 3.8 KB