Dave Allan <[email protected]> wrote:
...
>>> +static int
>>> +showDomains(virConnectPtr conn)
>>> +{
>>> + int ret = 0, i, numNames, numInactiveDomains, numActiveDomains;
>>> + char **nameList = NULL;
>>> +
>>> + numActiveDomains = virConnectNumOfDomains(conn);
>>> + numInactiveDomains = virConnectNumOfDefinedDomains(conn);
>>
>> It'd be good to handle numInactiveDomains < 0 differently.
>> Currently it'll probably provoke a failed malloc, below.
>
> Doh--thanks. I missed that those calls could fail.
The warning sign for me was that they were declared to be
of type "int". I asked myself "why?": for something that's
supposed to count, why allow negative numbers.
>>> + printf("There are %d active and %d inactive domains\n",
>>> + numActiveDomains, numInactiveDomains);
>>> +
>>> + nameList = malloc(sizeof(char *) * (unsigned int)numInactiveDomains);
...
>>> + if (NULL != nameList) {
>>> + free(nameList);
>>
>> The test for non-NULL-before-free is unnecessary,
>> since free is guaranteed to handle NULL properly.
>> So just call free:
>>
>> free(nameList);
>>
>> In fact, if you run "make syntax-check" before making the
>> suggested change, it should detect and complain about this code.
>
> Removed. (make syntax-check does not complain, btw)
Ah. thanks for mentioning that.
The script that detects those detects "if (expr != NULL) free(expr)",
but didn't bother to match the less common case where NULL is first:
"if (NULL != expr) free(expr)". I've made the upstream source of
that script detect your syntax, too:
http://git.savannah.gnu.org/gitweb/?p=gnulib.git;a=commitdiff;h=471cbb075f7
so none of those will slip into libvirt either, once we do the
next gnulib->libvirt sync.
...
>> I noticed that you're using the git mirror. Good! ;-)
>> When posting patches, please use "git format-patch".
>
> Will do.
>
>> That would have made it easier for me to apply and test
>> your patches. As it is, I didn't do either because
>> "git am FILE" didn't work:
>>
>> $ git am dallan.patch
>> Applying: trivial libvirt example code
>> warning: examples/hellolibvirt/hellolibvirt.c has type 100755, expected
>> 100644
>> error: patch failed: examples/hellolibvirt/hellolibvirt.c:97
>> error: examples/hellolibvirt/hellolibvirt.c: patch does not apply
>> Patch failed at 0001 trivial libvirt example code
>> When you have resolved this problem run "git am --resolved".
>> If you would prefer to skip this patch, instead run "git am --skip".
>> To restore the original branch and stop patching run "git am --abort".
>>
>> Note the warning about permissions on hellolibvirt.c.
>> You can correct that by running "chmod a-x hellolibvirt.c".
>
> The permissions problem is strange--it's 644 in my development tree, and
> the patch I sent has:
> diff --git a/examples/hellolibvirt/hellolibvirt.c
> b/examples/hellolibvirt/hellolibvirt.c
> new file mode 100644
>
> What would cause git-am to think it was 755?
I'll investigate if it happens again.
>> Here are some contribution guidelines that generally make it
>> easier for maintainers/committers to deal with contributed patches,
>> (though some parts are specific to git-managed projects):
>>
>> http://git.sv.gnu.org/gitweb/?p=coreutils.git;a=blob;f=HACKING;hb=HEAD
>
> Good stuff.
>
> When I have a patch like this that people have commented on and I've
> modified it slightly in response, what's the best way to re-submit it?
> When Rich responded, I submitted both the entire patch with the changes
> as well as the changes separately.
Personally I find 2nd-iteration reviews to work best when the
incremental patch is posted with either 1) the preceding
or 2) the squashed/final patch.
Otherwise, I have to apply the preceding patch and the new patch
on separate git branches, then diff those branches to see
the incremental. That's not frustrating and inefficient.
--
Libvir-list mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/libvir-list