ed29219 Don't use enums in TPM struct fields

Authored and Committed by berrange 6 years ago
    Don't use enums in TPM struct fields
    
    When using an enum in a struct field, the compiler is free to decide to
    make it an unsigned type if it desires. This in turn leads to bugs when
    code does
    
        if ((def->foo = virDomainFooTypeFromString(str)) < 0)
           ...
    
    because 'def->foo' can't technically have an unsigned value from the
    compiler's POV. While it is possible to add (int) casts in the code
    example above, this is not desirable because it is easy to miss out
    such casts. eg the code fixed here caused an error with clang builds
    
    ../../src/conf/domain_conf.c:12838:73: error: comparison of unsigned enum expression < 0 is always false [-Werror,-Wtautological-compare]
            if ((def->version = virDomainTPMVersionTypeFromString(version)) < 0) {
                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ ~
    
    Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
    
        
file modified
+2 -2
file modified
+3 -3