CommandLineToArgvW fix

Francois Gouget fgouget at
Mon Oct 8 22:18:22 CDT 2001

On 8 Oct 2001, Alexandre Julliard wrote:

> Francois Gouget <fgouget at> writes:
> >    Grrr, HGLOBAL is not a void* pointer... yet => casts :-(
> GlobalLock would be better...

   The problem is that CommandLineToArgvW is supposed to return a
pointer, not a handle. But I cannot do:

   return argv;

   Because then the the memory object is going to be locked and freeing
a locked memory object is bad according to the MSDN. And they don't say
that you should to a GlobalUnlock before the GlobalFree.

   So I could do:

   return argv;

   After all this memory object is GMEM_FIXED, it has to since I return
a pointer to it. But the MSDN says that in that case GlobalAlloc returns
a pointer, not a mere handle. And Invoking GlobalLock+GlobalUnlock just
to avoid a cast seems a bit extreme.

   Sigh. What a stupid memory API.

Francois Gouget         fgouget at
The nice thing about meditation is that it makes doing nothing quite respectable
                                  -- Paul Dean

More information about the wine-devel mailing list