Hey, On Mon, 2007-02-19 at 14:44 +0000, Richard W.M. Jones wrote: > We have some functions such as virConnectGetType which are defined to > return statically allocated strings: > > /** > * virConnectGetType: > * @conn: pointer to the hypervisor connection > * > * Get the name of the Hypervisor software used. > * > * Returns NULL in case of error, a static zero terminated string > otherwise. > */ > const char * > virConnectGetType(virConnectPtr conn) > [...] > > This is all well and good in the typical local case, but when working > over a remote connection the string we return is allocated and requires > freeing at some point. Uggh. > Unfortunately I don't see a good thing to do in > this case except to change the semantics of virConnectGetType, which > arguably breaks ABI compatibility. > > Suggestions from anyone? Okay, suggest: 1) Add a new function with a different name which returns an allocated string. Mark the old function as deprecated. 2) Retain the old function, and have a list of likely static strings which you can return if it matches the string you got from the remote side, and if not return (and leak) an allocated string Cheers, Mark.