RFC: {Global,Local}{Re,}Alloc()

Dimitrie O. Paun dpaun at rogers.com
Fri Nov 21 13:02:00 CST 2003


Hi folks,

There are a few places in Wine where we're not using the
Heap*() functions, but rather the old {Global,Local}{Re,}Alloc()
ones. IIRC we need to do so in controls/edit.c for compatibility
with old Win16 code, but why do we do so in places like:

  * print dialog
  * ole32
  * shell32
  * shlwapi

Here is a list of places where {Global,Local}ReAlloc() are used.
I'd like to replace them with Heap* functions where it is possible,
but before I do, I need to know where we need the old calls.

./controls/edit.c:                  hloc32W_new = LocalReAlloc(es->hloc32W, alloc_size, LMEM_MOVEABLE | LMEM_ZEROINIT);
./controls/edit.c:          if ((hNew32W = LocalReAlloc(es->hloc32W, alloc_size, LMEM_MOVEABLE | LMEM_ZEROINIT))) {
./controls/edit.c:                      hloc32A_new = LocalReAlloc(es->hloc32A, alloc_size, LMEM_MOVEABLE | LMEM_ZEROINIT);
./controls/edit.c:                      hloc16_new = LOCAL_ReAlloc(hInstance, es->hloc16, alloc_size, LMEM_MOVEABLE | LMEM_ZEROINIT);
./dlls/commdlg/printdlg.c:        *hmem = GlobalReAlloc(*hmem, size, GMEM_MOVEABLE);
./dlls/commdlg/printdlg.c:        *hmem = GlobalReAlloc(*hmem, size, GMEM_MOVEABLE);
./dlls/commdlg/printdlg.c:              lppd->hDevMode = GlobalReAlloc(lppd->hDevMode,
./dlls/commdlg/printdlg.c:              lppd->hDevMode = GlobalReAlloc(lppd->hDevMode,
./dlls/commdlg/printdlg16.c:        *hmem = GlobalReAlloc16(*hmem, size, GMEM_MOVEABLE);
./dlls/commdlg/printdlg16.c:            lppd->hDevMode = GlobalReAlloc16(lppd->hDevMode,
./dlls/kernel/local16.c:    hseg = GlobalReAlloc16( hseg, 0x10000, GMEM_FIXED );
./dlls/kernel/local16.c:HLOCAL16 LOCAL_ReAlloc( HANDLE16 ds, HLOCAL16 handle, WORD size, WORD flags )
./dlls/kernel/local16.c:HLOCAL16 WINAPI LocalReAlloc16( HLOCAL16 handle, WORD size, UINT16 flags )
./dlls/kernel/local16.c:    return LOCAL_ReAlloc( CURRENT_DS, handle, size, flags );
./dlls/kernel/local16.c:DWORD WINAPI Local32ReAlloc16( HANDLE heap, DWORD addr, INT16 type,
./dlls/kernel/resource16.c:            handle = GlobalReAlloc16( hMemObj, pNameInfo->length << sizeShift, 0 );
./dlls/kernel/resource16.c:            handle = GlobalReAlloc16( hMemObj, pNameInfo->length << sizeShift, 0 );
./dlls/ole32/hglobalstream.c:  This->supportHandle = GlobalReAlloc(This->supportHandle,
./dlls/ole32/ifs.c:        Malloc32.SpyedBlocks = (LPVOID*)LocalReAlloc((HLOCAL)Malloc32.SpyedBlocks, NewLength, GMEM_ZEROINIT);
./dlls/ole32/memlockbytes.c:  This->supportHandle = GlobalReAlloc(This->supportHandle,
./dlls/ole32/memlockbytes16.c:  This->supportHandle = GlobalReAlloc16(This->supportHandle,
./dlls/shell32/shell32_main.c:            hargv=GlobalReAlloc(hargv, size, 0);
./dlls/shell32/shellole.c:                      addr = (LPVOID) LocalReAlloc((HANDLE) pv, cb, GMEM_ZEROINIT | GMEM_MOVEABLE);
./dlls/shlwapi/clist.c:          lpTemp = (LPSHLWAPI_CLIST)LocalReAlloc((HLOCAL)pItem, ulSize,
./dlls/shlwapi/clist.c:    lpIter = (LPSHLWAPI_CLIST)LocalReAlloc((HLOCAL)*lppList,
./dlls/shlwapi/clist.c:    lpList = (LPSHLWAPI_CLIST)LocalReAlloc((HLOCAL)*lppList, ulNewSize,
./dlls/user/dde/misc.c: hData = GlobalReAlloc((HGLOBAL)hData, new_sz + sizeof(DDE_DATAHANDLE_HEAD),
./objects/gdiobj.c:        if ((new_handle = (HGDIOBJ)(ULONG_PTR)LOCAL_ReAlloc( GDI_HeapSel, h, size, LMEM_MOVEABLE )))
./objects/metafile.c:        return (HMETAFILE16)GlobalReAlloc16( hMeta, 0,

-- 
Dimi.




More information about the wine-devel mailing list