Alfred Agrell (@Alcaro) commented about dlls/shell32/shellord.c:
LPDWORD pdwEffect) { FIXME("(%p %p %p 0x%08lx %p):stub.\n",
- hWnd, lpDataObject, lpDropSource, dwOKEffect, pdwEffect);
- return DoDragDrop(lpDataObject, lpDropSource, dwOKEffect, pdwEffect);
hWnd, lpDataObject, lpDropSource, dwOKEffect, pdwEffect);
- if(lpDropSource == NULL)
- {
/*Windows Vista or Above expect this function to create a IDropSource object if none was provided. Delphi Windows Vista drag and drop routines actually expect this to work */
IDummySource* dummy = calloc(1, sizeof(IDummySource));
if(dummy){
dummy->IDropSource_iface.lpVtbl = &dropsourcevtbl;
dummy->Ref = 1;
lpDropSource = &dummy->IDropSource_iface;
I'm not seeing where that object is freed. Am I missing something, or is this a memory leak?
And this should probably return E_OUTOFMEMORY, not call DoDragDrop with bogus arguments.