On 10/19/2010 08:23 AM, Matthias Bolte wrote:
> strdup() is nothing more than malloc() followed by strcpy();
See [1] for more details. When I understood Arnaud correctly then
passing the result of Marshal.StringToHGlobalAuto() directly as
cred.result didn't work, but passing the result from strdup() works.
Thanks for the reminder. I'm not very familiar with C# myself, but I do
agree with the analysis that Windows memory management is not always
straight-forward, since there is more than just the malloc() pool, and
therefore strdup() is not necessarily a trivial operation since it
determines which memory pool is in use. Sorry if my previous message
came across harsher than intended (now that I've gone back and re-read it).
Marshal.StringToHGlobalAuto() + strdup() just works for now but is
ugly. Arnaud said that he is working on a better approach for this
(custom marshaling), that doesn't require strdup().
Good luck with it, and thanks again to Arnaud for taking on the task of
a new language binding.
--
Eric Blake eblake(a)redhat.com +1-801-349-2682
Libvirt virtualization library
http://libvirt.org