Daniel Veillard wrote:
On Fri, Jun 22, 2007 at 10:30:37AM +0100, Richard W.M. Jones wrote:
> This small patch fixes some bugs in the handling of the field string in
> virDomainGetSchedulerParameters and makes a similar pre-emptive fix to
> virDomainSetSchedulerParameters.
>
> Also, please don't use !strcmp(a,b), because it confuses me. Better is
> to write strcmp(a,b) == 0 to mean "strings match" and strcmp(a,b) != 0
> to mean "strings don't match".
yeah the strncmp use is vrong, it should be fixed. But I dislike the
change from strncpy to strcpy. I agree that affecting local variables
with fixed strings is not nice, but as we try to chase strcpy call out
of the code those will show up, le'ts use
strncpy(..., "weight", 6)
instead. Okay ?
I don't understand ... This was the original problem, namely that the
field was being initialised to the string followed by garbage (without a
terminating '\0'):
(gdb) print params[1]
$5 = {
field =
"cap\205�\177\000\000�pԪ�*\000\000\000\000\000\000\000\000\000\000\003ˠ.4\000\000\000\001",
'\0' <repeats 23 times>,
"`\231\024/4\000\000\000\200Q�\205�\177\000\000�F@\000\000\000\000",
type = 2, value = {i = 0, ui = 0,
l = 140733193388032, ul = 140733193388032, d =
6.9531436082559078e-310,
b = 0 '\0'}}
On the other hand if you meant strncpy (field, "weight",
VIR_DOMAIN_SCHED_FIELD_LENGTH), followed by
field[VIR_DOMAIN_SCHED_FIELD_LENGTH-1] = '\0' then I'd agree.
Rich.
--
Emerging Technologies, Red Hat -
http://et.redhat.com/~rjones/
Registered Address: Red Hat UK Ltd, Amberley Place, 107-111 Peascod
Street, Windsor, Berkshire, SL4 1TE, United Kingdom. Registered in
England and Wales under Company Registration No. 03798903