Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-cw
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-cw
Commits
e510a291
Commit
e510a291
authored
May 14, 2005
by
Dimi Paun
Committed by
Alexandre Julliard
May 14, 2005
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Make LOCAL_*() just wrappers around Local*16() functions.
parent
d876893f
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
173 additions
and
163 deletions
+173
-163
gdiobj.c
dlls/gdi/gdiobj.c
+1
-1
kernel32.spec
dlls/kernel/kernel32.spec
+8
-9
local16.c
dlls/kernel/local16.c
+40
-140
local.h
include/local.h
+123
-12
user.c
windows/user.c
+1
-1
No files found.
dlls/gdi/gdiobj.c
View file @
e510a291
...
...
@@ -1459,7 +1459,7 @@ DWORD WINAPI GdiSeeGdiDo16( WORD wReqType, WORD wParam1, WORD wParam2,
case
0x0002
:
/* LocalFree */
return
LOCAL_Free
(
GDI_HeapSel
,
wParam1
);
case
0x0003
:
/* LocalCompact */
return
LOCAL_Compact
(
GDI_HeapSel
,
wParam3
,
0
);
return
LOCAL_Compact
(
GDI_HeapSel
,
wParam3
);
case
0x0103
:
/* LocalHeap */
return
GDI_HeapSel
;
default:
...
...
dlls/kernel/kernel32.spec
View file @
e510a291
...
...
@@ -1138,6 +1138,14 @@
@ stdcall LocalInit16(long long long)
@ stdcall LocalLock16(long)
@ stdcall LocalUnlock16(long)
@ stdcall LocalReAlloc16(long long long)
@ stdcall LocalFree16(long)
@ stdcall LocalSize16(long)
@ stdcall LocalHandle16(long)
@ stdcall LocalFlags16(long)
@ stdcall LocalCompact16(long)
@ stdcall LocalCountFree16()
@ stdcall LocalHeapSize16()
@ stdcall LockResource16(long)
@ stdcall SelectorAccessRights16(long long long)
@ stdcall SetSelectorBase(long long)
...
...
@@ -1169,13 +1177,4 @@
# Wine dll separation hacks, these will go away, don't use them
#
@ cdecl DOSMEM_AllocSelector(long)
@ cdecl LOCAL_Alloc(long long long)
@ cdecl LOCAL_Compact(long long long)
@ cdecl LOCAL_CountFree(long)
@ cdecl LOCAL_Free(long long)
@ cdecl LOCAL_HeapSize(long)
@ cdecl LOCAL_Lock(long long)
@ cdecl LOCAL_ReAlloc(long long long long)
@ cdecl LOCAL_Size(long long)
@ cdecl LOCAL_Unlock(long long)
@ stdcall NE_DefResourceHandler(long long long)
dlls/kernel/local16.c
View file @
e510a291
...
...
@@ -726,9 +726,9 @@ static WORD LOCAL_GetFreeSpace(WORD ds, WORD countdiscard)
/***********************************************************************
*
LOCAL_C
ompact
*
local_c
ompact
*/
WORD
LOCAL_C
ompact
(
HANDLE16
ds
,
UINT16
minfree
,
UINT16
flags
)
static
UINT16
local_c
ompact
(
HANDLE16
ds
,
UINT16
minfree
,
UINT16
flags
)
{
char
*
ptr
=
MapSL
(
MAKESEGPTR
(
ds
,
0
)
);
LOCALHEAPINFO
*
pInfo
;
...
...
@@ -845,7 +845,7 @@ WORD LOCAL_Compact( HANDLE16 ds, UINT16 minfree, UINT16 flags )
}
table
=
*
(
WORD
*
)
pEntry
;
}
return
LOCAL_C
ompact
(
ds
,
0xffff
,
LMEM_NODISCARD
);
return
local_c
ompact
(
ds
,
0xffff
,
LMEM_NODISCARD
);
}
...
...
@@ -931,7 +931,7 @@ notify_done:
arena
=
LOCAL_FindFreeBlock
(
ds
,
size
);
if
(
arena
==
0
)
{
/* no space: try to make some */
LOCAL_C
ompact
(
ds
,
size
,
flags
);
local_c
ompact
(
ds
,
size
,
flags
);
arena
=
LOCAL_FindFreeBlock
(
ds
,
size
);
}
if
(
arena
==
0
)
{
...
...
@@ -1117,12 +1117,11 @@ static void LOCAL_FreeHandleEntry( HANDLE16 ds, HLOCAL16 handle )
/***********************************************************************
* LOCAL_Free
*
* Implementation of LocalFree().
* LocalFree (KERNEL.7)
*/
HLOCAL16
LOCAL_Free
(
HANDLE16
ds
,
HLOCAL16
handle
)
HLOCAL16
WINAPI
LocalFree16
(
HLOCAL16
handle
)
{
HANDLE16
ds
=
CURRENT_DS
;
char
*
ptr
=
MapSL
(
MAKESEGPTR
(
ds
,
0
)
);
TRACE
(
"%04x ds=%04x
\n
"
,
handle
,
ds
);
...
...
@@ -1150,15 +1149,13 @@ HLOCAL16 LOCAL_Free( HANDLE16 ds, HLOCAL16 handle )
/***********************************************************************
* LOCAL_Alloc
*
* Implementation of LocalAlloc().
*
* LocalAlloc (KERNEL.5)
*/
HLOCAL16
LOCAL_Alloc
(
HANDLE16
ds
,
WORD
flags
,
WORD
size
)
HLOCAL16
WINAPI
LocalAlloc16
(
UINT16
flags
,
WORD
size
)
{
HANDLE16
ds
=
CURRENT_DS
;
HLOCAL16
handle
=
0
;
char
*
ptr
;
HLOCAL16
handle
;
TRACE
(
"%04x %d ds=%04x
\n
"
,
flags
,
size
,
ds
);
...
...
@@ -1171,7 +1168,7 @@ HLOCAL16 LOCAL_Alloc( HANDLE16 ds, WORD flags, WORD size )
if
(
size
)
{
if
(
!
(
hmem
=
LOCAL_GetBlock
(
ds
,
size
+
MOVEABLE_PREFIX
,
flags
)))
return
0
;
goto
exit
;
}
else
/* We just need to allocate a discarded handle */
hmem
=
0
;
...
...
@@ -1180,7 +1177,7 @@ HLOCAL16 LOCAL_Alloc( HANDLE16 ds, WORD flags, WORD size )
WARN
(
"Couldn't get handle.
\n
"
);
if
(
hmem
)
LOCAL_FreeArena
(
ds
,
ARENA_HEADER
(
hmem
)
);
return
0
;
goto
exit
;
}
ptr
=
MapSL
(
MAKESEGPTR
(
ds
,
0
)
);
plhe
=
(
LOCALHANDLEENTRY
*
)(
ptr
+
handle
);
...
...
@@ -1199,21 +1196,21 @@ HLOCAL16 LOCAL_Alloc( HANDLE16 ds, WORD flags, WORD size )
}
else
/* FIXED */
{
if
(
!
size
)
return
0
;
handle
=
LOCAL_GetBlock
(
ds
,
size
,
flags
);
if
(
size
)
handle
=
LOCAL_GetBlock
(
ds
,
size
,
flags
);
}
exit:
CURRENT_STACK16
->
ecx
=
handle
;
/* must be returned in cx too */
return
handle
;
}
/***********************************************************************
* LOCAL_ReAlloc
*
* Implementation of LocalReAlloc().
* LocalReAlloc (KERNEL.6)
*/
HLOCAL16
LOCAL_ReAlloc
(
HANDLE16
ds
,
HLOCAL16
handle
,
WORD
size
,
WORD
flags
)
HLOCAL16
WINAPI
LocalReAlloc16
(
HLOCAL16
handle
,
WORD
size
,
UINT16
flags
)
{
HANDLE16
ds
=
CURRENT_DS
;
char
*
ptr
=
MapSL
(
MAKESEGPTR
(
ds
,
0
)
);
LOCALHEAPINFO
*
pInfo
;
LOCALARENA
*
pArena
,
*
pNext
;
...
...
@@ -1433,20 +1430,11 @@ static HLOCAL16 LOCAL_InternalLock( LPSTR heap, HLOCAL16 handle )
/***********************************************************************
* LOCAL_Lock
*/
void
*
LOCAL_Lock
(
HANDLE16
ds
,
HLOCAL16
handle
)
{
char
*
ptr
=
MapSL
(
MAKESEGPTR
(
ds
,
0
)
);
return
handle
?
ptr
+
LOCAL_InternalLock
(
ptr
,
handle
)
:
NULL
;
}
/***********************************************************************
* LOCAL_Unlock
* LocalUnlock (KERNEL.9)
*/
BOOL16
LOCAL_Unlock
(
HANDLE16
ds
,
HLOCAL16
handle
)
BOOL16
WINAPI
LocalUnlock16
(
HLOCAL16
handle
)
{
HANDLE16
ds
=
CURRENT_DS
;
char
*
ptr
=
MapSL
(
MAKESEGPTR
(
ds
,
0
)
);
TRACE
(
"%04x
\n
"
,
handle
);
...
...
@@ -1463,12 +1451,11 @@ BOOL16 LOCAL_Unlock( HANDLE16 ds, HLOCAL16 handle )
/***********************************************************************
* LOCAL_Size
*
* Implementation of LocalSize().
* LocalSize (KERNEL.10)
*/
WORD
LOCAL_Size
(
HANDLE16
ds
,
HLOCAL16
handle
)
UINT16
WINAPI
LocalSize16
(
HLOCAL16
handle
)
{
HANDLE16
ds
=
CURRENT_DS
;
char
*
ptr
=
MapSL
(
MAKESEGPTR
(
ds
,
0
)
);
LOCALARENA
*
pArena
;
...
...
@@ -1489,12 +1476,11 @@ WORD LOCAL_Size( HANDLE16 ds, HLOCAL16 handle )
/***********************************************************************
* LOCAL_Flags
*
* Implementation of LocalFlags().
* LocalFlags (KERNEL.12)
*/
WORD
LOCAL_Flags
(
HANDLE16
ds
,
HLOCAL16
handle
)
UINT16
WINAPI
LocalFlags16
(
HLOCAL16
handle
)
{
HANDLE16
ds
=
CURRENT_DS
;
char
*
ptr
=
MapSL
(
MAKESEGPTR
(
ds
,
0
)
);
if
(
HANDLE_MOVEABLE
(
handle
))
...
...
@@ -1514,25 +1500,22 @@ WORD LOCAL_Flags( HANDLE16 ds, HLOCAL16 handle )
/***********************************************************************
* LOCAL_HeapSize
*
* Implementation of LocalHeapSize().
* LocalHeapSize (KERNEL.162)
*/
WORD
LOCAL_HeapSize
(
HANDLE16
ds
)
WORD
WINAPI
LocalHeapSize16
(
void
)
{
HANDLE16
ds
=
CURRENT_DS
;
LOCALHEAPINFO
*
pInfo
=
LOCAL_GetHeap
(
ds
);
if
(
!
pInfo
)
return
0
;
return
pInfo
->
last
-
pInfo
->
first
;
return
pInfo
?
pInfo
->
last
-
pInfo
->
first
:
0
;
}
/***********************************************************************
* LOCAL_CountFree
*
* Implementation of LocalCountFree().
* LocalCountFree (KERNEL.161)
*/
WORD
LOCAL_CountFree
(
HANDLE16
ds
)
WORD
WINAPI
LocalCountFree16
(
void
)
{
HANDLE16
ds
=
CURRENT_DS
;
WORD
arena
,
total
;
LOCALARENA
*
pArena
;
LOCALHEAPINFO
*
pInfo
;
...
...
@@ -1561,12 +1544,11 @@ WORD LOCAL_CountFree( HANDLE16 ds )
/***********************************************************************
* LOCAL_Handle
*
* Implementation of LocalHandle().
* LocalHandle (KERNEL.11)
*/
HLOCAL16
LOCAL_Handle
(
HANDLE16
ds
,
WORD
addr
)
HLOCAL16
WINAPI
LocalHandle16
(
WORD
addr
)
{
HANDLE16
ds
=
CURRENT_DS
;
char
*
ptr
=
MapSL
(
MAKESEGPTR
(
ds
,
0
)
);
LOCALHEAPINFO
*
pInfo
;
WORD
table
;
...
...
@@ -1594,33 +1576,6 @@ HLOCAL16 LOCAL_Handle( HANDLE16 ds, WORD addr )
}
/***********************************************************************
* LocalAlloc (KERNEL.5)
*/
HLOCAL16
WINAPI
LocalAlloc16
(
UINT16
flags
,
WORD
size
)
{
HLOCAL16
ret
=
LOCAL_Alloc
(
CURRENT_DS
,
flags
,
size
);
CURRENT_STACK16
->
ecx
=
ret
;
/* must be returned in cx too */
return
ret
;
}
/***********************************************************************
* LocalReAlloc (KERNEL.6)
*/
HLOCAL16
WINAPI
LocalReAlloc16
(
HLOCAL16
handle
,
WORD
size
,
UINT16
flags
)
{
return
LOCAL_ReAlloc
(
CURRENT_DS
,
handle
,
size
,
flags
);
}
/***********************************************************************
* LocalFree (KERNEL.7)
*/
HLOCAL16
WINAPI
LocalFree16
(
HLOCAL16
handle
)
{
return
LOCAL_Free
(
CURRENT_DS
,
handle
);
}
/***********************************************************************
...
...
@@ -1637,48 +1592,12 @@ SEGPTR WINAPI LocalLock16( HLOCAL16 handle )
/***********************************************************************
* LocalUnlock (KERNEL.9)
*/
BOOL16
WINAPI
LocalUnlock16
(
HLOCAL16
handle
)
{
return
LOCAL_Unlock
(
CURRENT_DS
,
handle
);
}
/***********************************************************************
* LocalSize (KERNEL.10)
*/
UINT16
WINAPI
LocalSize16
(
HLOCAL16
handle
)
{
return
LOCAL_Size
(
CURRENT_DS
,
handle
);
}
/***********************************************************************
* LocalHandle (KERNEL.11)
*/
HLOCAL16
WINAPI
LocalHandle16
(
WORD
addr
)
{
return
LOCAL_Handle
(
CURRENT_DS
,
addr
);
}
/***********************************************************************
* LocalFlags (KERNEL.12)
*/
UINT16
WINAPI
LocalFlags16
(
HLOCAL16
handle
)
{
return
LOCAL_Flags
(
CURRENT_DS
,
handle
);
}
/***********************************************************************
* LocalCompact (KERNEL.13)
*/
UINT16
WINAPI
LocalCompact16
(
UINT16
minfree
)
{
TRACE
(
"%04x
\n
"
,
minfree
);
return
LOCAL_C
ompact
(
CURRENT_DS
,
minfree
,
0
);
return
local_c
ompact
(
CURRENT_DS
,
minfree
,
0
);
}
...
...
@@ -1746,25 +1665,6 @@ DWORD WINAPI GetHeapSpaces16( HMODULE16 module )
/***********************************************************************
* LocalCountFree (KERNEL.161)
*/
WORD
WINAPI
LocalCountFree16
(
void
)
{
return
LOCAL_CountFree
(
CURRENT_DS
);
}
/***********************************************************************
* LocalHeapSize (KERNEL.162)
*/
WORD
WINAPI
LocalHeapSize16
(
void
)
{
TRACE
(
"(void)
\n
"
);
return
LOCAL_HeapSize
(
CURRENT_DS
);
}
/***********************************************************************
* LocalHandleDelta (KERNEL.310)
*/
WORD
WINAPI
LocalHandleDelta16
(
WORD
delta
)
...
...
include/local.h
View file @
e510a291
...
...
@@ -23,22 +23,133 @@
#include <windef.h>
#include <wine/windef16.h>
#include <wine/winbase16.h>
#include <stackframe.h>
/* These function are equivalent to the Local* API functions, */
/* excepted that they need DS as the first parameter. This */
/* allows managing several heaps from the emulation library. */
static
inline
HLOCAL16
LOCAL_Alloc
(
HANDLE16
ds
,
UINT16
flags
,
WORD
size
)
{
HANDLE16
oldDS
=
CURRENT_DS
;
HLOCAL16
ret
;
CURRENT_DS
=
ds
;
ret
=
LocalAlloc16
(
flags
,
size
);
CURRENT_DS
=
oldDS
;
return
ret
;
}
static
inline
HLOCAL16
LOCAL_ReAlloc
(
HANDLE16
ds
,
HLOCAL16
handle
,
WORD
size
,
UINT16
flags
)
{
HANDLE16
oldDS
=
CURRENT_DS
;
HLOCAL16
ret
;
CURRENT_DS
=
ds
;
ret
=
LocalReAlloc16
(
handle
,
size
,
flags
);
CURRENT_DS
=
oldDS
;
return
ret
;
}
static
inline
HLOCAL16
LOCAL_Free
(
HANDLE16
ds
,
HLOCAL16
handle
)
{
HANDLE16
oldDS
=
CURRENT_DS
;
HLOCAL16
ret
;
CURRENT_DS
=
ds
;
ret
=
LocalFree16
(
handle
);
CURRENT_DS
=
oldDS
;
return
ret
;
}
static
inline
HLOCAL16
LOCAL_Handle
(
HANDLE16
ds
,
WORD
addr
)
{
HANDLE16
oldDS
=
CURRENT_DS
;
HLOCAL16
ret
;
CURRENT_DS
=
ds
;
ret
=
LocalHandle16
(
addr
);
CURRENT_DS
=
oldDS
;
return
ret
;
}
static
inline
UINT16
LOCAL_Size
(
HANDLE16
ds
,
HLOCAL16
handle
)
{
HANDLE16
oldDS
=
CURRENT_DS
;
UINT16
ret
;
CURRENT_DS
=
ds
;
ret
=
LocalSize16
(
handle
);
CURRENT_DS
=
oldDS
;
return
ret
;
}
static
inline
UINT16
LOCAL_Flags
(
HANDLE16
ds
,
HLOCAL16
handle
)
{
HANDLE16
oldDS
=
CURRENT_DS
;
UINT16
ret
;
CURRENT_DS
=
ds
;
ret
=
LocalFlags16
(
handle
);
CURRENT_DS
=
oldDS
;
return
ret
;
}
static
inline
UINT16
LOCAL_HeapSize
(
HANDLE16
ds
)
{
HANDLE16
oldDS
=
CURRENT_DS
;
UINT16
ret
;
CURRENT_DS
=
ds
;
ret
=
LocalHeapSize16
();
CURRENT_DS
=
oldDS
;
return
ret
;
}
static
inline
UINT16
LOCAL_CountFree
(
HANDLE16
ds
)
{
HANDLE16
oldDS
=
CURRENT_DS
;
UINT16
ret
;
CURRENT_DS
=
ds
;
ret
=
LocalCountFree16
();
CURRENT_DS
=
oldDS
;
return
ret
;
}
static
inline
void
*
LOCAL_Lock
(
HANDLE16
ds
,
HLOCAL16
handle
)
{
HANDLE16
oldDS
=
CURRENT_DS
;
SEGPTR
ret
;
CURRENT_DS
=
ds
;
ret
=
LocalLock16
(
handle
);
CURRENT_DS
=
oldDS
;
return
MapSL
(
ret
);
}
static
inline
BOOL16
LOCAL_Unlock
(
HANDLE16
ds
,
HLOCAL16
handle
)
{
HANDLE16
oldDS
=
CURRENT_DS
;
BOOL16
ret
;
CURRENT_DS
=
ds
;
ret
=
LocalUnlock16
(
handle
);
CURRENT_DS
=
oldDS
;
return
ret
;
}
static
inline
WORD
LOCAL_Compact
(
HANDLE16
ds
,
UINT16
minfree
)
{
HANDLE16
oldDS
=
CURRENT_DS
;
WORD
ret
;
CURRENT_DS
=
ds
;
ret
=
LocalCompact16
(
minfree
);
CURRENT_DS
=
oldDS
;
return
ret
;
}
extern
HLOCAL16
LOCAL_Alloc
(
HANDLE16
ds
,
UINT16
flags
,
WORD
size
);
extern
HLOCAL16
LOCAL_ReAlloc
(
HANDLE16
ds
,
HLOCAL16
handle
,
WORD
size
,
UINT16
flags
);
extern
HLOCAL16
LOCAL_Free
(
HANDLE16
ds
,
HLOCAL16
handle
);
extern
HLOCAL16
LOCAL_Handle
(
HANDLE16
ds
,
WORD
addr
);
extern
UINT16
LOCAL_Size
(
HANDLE16
ds
,
HLOCAL16
handle
);
extern
UINT16
LOCAL_Flags
(
HANDLE16
ds
,
HLOCAL16
handle
);
extern
UINT16
LOCAL_HeapSize
(
HANDLE16
ds
);
extern
UINT16
LOCAL_CountFree
(
HANDLE16
ds
);
extern
void
*
LOCAL_Lock
(
HANDLE16
ds
,
HLOCAL16
handle
);
extern
BOOL16
LOCAL_Unlock
(
HANDLE16
ds
,
HLOCAL16
handle
);
extern
WORD
LOCAL_Compact
(
HANDLE16
ds
,
UINT16
minfree
,
UINT16
flags
);
#endif
/* __WINE_LOCAL_H */
windows/user.c
View file @
e510a291
...
...
@@ -553,7 +553,7 @@ DWORD WINAPI UserSeeUserDo16(WORD wReqType, WORD wParam1, WORD wParam2, WORD wPa
case
USUD_LOCALFREE
:
return
LOCAL_Free
(
USER_HeapSel
,
wParam1
);
case
USUD_LOCALCOMPACT
:
return
LOCAL_Compact
(
USER_HeapSel
,
wParam3
,
0
);
return
LOCAL_Compact
(
USER_HeapSel
,
wParam3
);
case
USUD_LOCALHEAP
:
return
USER_HeapSel
;
case
USUD_FIRSTCLASS
:
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment