> msg is a stack variable, you can't return it iirc. Either create a var on
> the heap, or pass  msg in as a parameter.
>

D'oh! You're right. I changed the code to the following and it's working.
Notice use of CoTaskMemAlloc, which I think is the least worst choice of
heap allocation functions according to the MSDN docs.

Notice that I've completely forgotten what the lengths are supposed to be
for string lengths, is it x2 for wchar? is it correct to allocate 200 bytes
for 100 wchars? The compiler is giving me an overrun warning. You're
supposed to use sizeof or something like that, but my brain has gone mushy
on all those rules now (which is part of the reason I never want to code
this assembler crap again!).

Even worse … what about the memory leak in CoTaskMemAlloc? I make the
buffer, copy in the string and return it, but it's now leaked. Should I use
a global static buffer that can be released later? When?

*GK*

[image: image.png]

Reply via email to