On Thu, Jun 19, 2008 at 05:51:07AM -0400, Daniel Veillard wrote: > On Thu, Jun 19, 2008 at 10:49:59AM +0200, Chris Lalancette wrote: > > Hello, > > For 0.4.3, danpb's new memory management scheme went into libvirt. This is > > fine, except that is subtly alters the semantics of malloc(), calloc(), and > > realloc(). In particular, if you say: > > > > foo = malloc(0); > > > > glibc will happily return a non-NULL pointer to you. However, with the new > > memory management stuff, if you say: > > > > foo = VIR_ALLOC(0); > > > > you will actually get a NULL pointer back. Personally, I think this is a > > dangerous deviation from malloc() semantics that everyone is used to, and is > > indeed causing problems with the remote driver. The short of it is that the > > remote driver allocates memory on behalf of the remote side using VIR_ALLOC_N, > > and this call is returning NULL so that the NULL checks elsewhere in the code > > fire and return failure. > > > > The attached patch fixes this situation by removing the 0 checks from the memory > > allocation paths, and just lets them fall through to the normal malloc(), > > calloc(), or realloc() routines, restoring old semantics. > > > > Signed-off-by: Chris Lalancette <clalance@xxxxxxxxxx> > > Agreed, it's a problem, +1, but > since Dan explicitely made the == 0 test to return NULL he probably > had a purpose about this (I suspect detecting 0 sized memory allocations). No, this was just a stupid bug on my part. This patch is fine. Regards, Daniel -- |: Red Hat, Engineering, London -o- http://people.redhat.com/berrange/ :| |: http://libvirt.org -o- http://virt-manager.org -o- http://ovirt.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :| -- Libvir-list mailing list Libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list