
On Tue, May 18, 2010 at 11:43:30AM +0100, Daniel P. Berrange wrote:
On Tue, May 18, 2010 at 12:32:13PM +0200, Jim Meyering wrote:
I've just fixed code in a test that ignored virInitialize failure. Looking at all uses, I saw one other: in python/libvirt-override.c, where the initialization function ignores virInitialize failure:
void #ifndef __CYGWIN__ initlibvirtmod #else initcygvirtmod #endif (void) { static int initialized = 0;
if (initialized != 0) return;
virInitialize();
/* initialize the python extension module */ Py_InitModule((char *) #ifndef __CYGWIN__ "libvirtmod" #else "cygvirtmod" #endif , libvirtMethods);
initialized = 1; }
Unfortunately, this function is public, so we can't change its signature.
More specifically, the signature is defined by Python's loadable module interface so we're not at liberty to redeclare that.
Any suggestions?
abort()
Actually I've got another idea. Make the Py_InitModule() call conditional on virInitialize() suceeding. That way if virInitialize() fails, none of the libvirt APIs will get bound to the python layer, preventing their use Daniel -- |: Red Hat, Engineering, London -o- http://people.redhat.com/berrange/ :| |: http://libvirt.org -o- http://virt-manager.org -o- http://deltacloud.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|