[libvirt] [PATCH v2 6/9] virConnectBaselineCPU public API implementation

Chris Lalancette clalance at redhat.com
Thu Feb 11 19:37:06 UTC 2010


On 02/11/2010 02:20 PM, Jiri Denemark wrote:
>>> +char *
>>> +virConnectBaselineCPU(virConnectPtr conn,
>>> +                      const char **xmlCPUs,
>>> +                      unsigned int ncpus,
>>> +                      unsigned int flags)
>>> +{
>>> +    unsigned int i;
>>> +
>>> +    VIR_DEBUG("conn=%p, xmlCPUs=%p, ncpus=%u, flags=%u",
>>> +              conn, xmlCPUs, ncpus, flags);
>>> +    if (xmlCPUs) {
>>> +        for (i = 0; i < ncpus; i++)
>>> +            VIR_DEBUG("xmlCPUs[%u]=%s", i, xmlCPUs[i]);
>>
>>    Hum ... what if xmlCPUs[i] == NULL ... we should not crash there
>> maybe this should be tested and that loop being done after
>> VIR_IS_CONNECT(conn) check and xmlCPUs == NULL check
> 
> I think it's better to keep it just after the first debug print as the purpose
> of this loop is to print detailed data about arguments passed to
> virConnectBaselineCPU(). However, we shouldn't really crash there. I think
> 
>     xmlCPUs[i] ? xmlCPUs[i] : "(null)"

Well, in Linux, printf("%s", NULL) is generally safe (it prints "(null").
However, that is not portable, so there is a wrapper or something in the
libvirt code that does "safe" printing of NULL pointers.  I can't quite
remember exactly what it's called, but take a look around.

-- 
Chris Lalancette




More information about the libvir-list mailing list