[prev in list] [next in list] [prev in thread] [next in thread]
List: libvir-list
Subject: Re: [Libvir] Re: [PATCH] allocate virBuffer* routines
From: Karel Zak <kzak () redhat ! com>
Date: 2007-04-30 8:02:36
Message-ID: 20070430080236.GG7348 () petra ! dvoda ! cz
[Download RAW message or body]
On Tue, Apr 24, 2007 at 09:48:09PM +0900, S.Sakamoto wrote:
> diff -u -p -r1.110 xend_internal.c
> --- src/xend_internal.c 23 Apr 2007 07:41:23 -0000 1.110
> +++ src/xend_internal.c 24 Apr 2007 11:00:55 -0000
> @@ -587,24 +587,33 @@ static int
> xend_op_ext2(virConnectPtr xend, const char *path, char *error,
> size_t n_error, const char *key, va_list ap)
> {
> - char ops[VIR_XML_STRING_BUFLEN];
> const char *k = key, *v;
> - int offset = 0;
> + virBuffer buf;
> + int ret;
> +
> + buf.content = malloc(1000);
> + if (buf.content == NULL)
> + return -1;
> + buf.size = 1000;
> + buf.use = 0;
Why not virBufferNew(1000) ?
Is it really advantage that you save one extra malloc() for the buf
pointer? I don't think so -- especially if you need to manually set
internal virBuffer stuff.
> while (k) {
> v = va_arg(ap, const char *);
>
> - offset += snprintf(ops + offset, sizeof(ops) - offset, "%s", k);
> - offset += snprintf(ops + offset, sizeof(ops) - offset, "%s", "=");
> - offset += snprintf(ops + offset, sizeof(ops) - offset, "%s", v);
> + virBufferVSprintf(&buf, "%s", k);
> + virBufferVSprintf(&buf, "%s", "=");
> + virBufferVSprintf(&buf, "%s", v);
Please, use virBufferStrcat or virBufferAdd if you needn't a string
formatting. It's cheaper and faster.
virBufferStrcat(&buf, k, "=", v, NULL);
> - offset += snprintf(ops + offset,
> - sizeof(ops) - offset, "%s", "&");
> + virBufferVSprintf(&buf, "%s", "&");
virBufferAdd(&buf, "&", 1);
Pedantic Karel :-)
--
Karel Zak <kzak@redhat.com>
Red Hat Czech s.r.o.
Purkynova 99/71, 612 45 Brno, Czech Republic
Reg.id: CZ27690016
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic