[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [Libvir] ABI compatibility question: static strings returned from some functions


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.


>   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


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]