OSDN Git Service

Provide LocalDiscard() implementation per issue #44471.
authorKeith Marshall <keith@users.osdn.me>
Fri, 4 Nov 2022 20:30:53 +0000 (20:30 +0000)
committerKeith Marshall <keith@users.osdn.me>
Fri, 4 Nov 2022 20:30:53 +0000 (20:30 +0000)
w32api/ChangeLog
w32api/include/winbase.h

index 966f1f5..d161225 100644 (file)
@@ -1,3 +1,12 @@
+2022-11-04  Keith Marshall  <keith@users.osdn.me>
+
+       Provide LocalDiscard() implementation per issue #44471.
+
+       * include/winbase.h (LocalDiscard): There is no DLL exporting this
+       function; delete prototype declaration which suggests that there is;
+       replace it with an intrinsic function implementation, based on a hint
+       found in ReactOS documentation of a macro definition.
+
 2022-11-04  Eli Zaretskii  <eliz@gnu.org>
 
        Fix IsProcessInJob() function prototype per issue #44471.
index 786d7e3..2650a8c 100644 (file)
@@ -2180,7 +2180,6 @@ WINBASEAPI DWORD WINAPI LoadModule (LPCSTR, PVOID);
 WINBASEAPI HGLOBAL WINAPI LoadResource (HINSTANCE, HRSRC);
 WINBASEAPI HLOCAL WINAPI LocalAlloc (UINT, SIZE_T);
 WINBASEAPI SIZE_T WINAPI LocalCompact (UINT); /* Obsolete: Has no effect. */
-WINBASEAPI HLOCAL LocalDiscard (HLOCAL);
 WINBASEAPI BOOL WINAPI LocalFileTimeToFileTime (CONST FILETIME *, LPFILETIME);
 WINBASEAPI UINT WINAPI LocalFlags (HLOCAL); /* Obsolete: Has no effect. */
 WINBASEAPI HLOCAL WINAPI LocalFree (HLOCAL);
@@ -2195,6 +2194,14 @@ WINBASEAPI BOOL WINAPI LockFileEx
 (HANDLE, DWORD, DWORD, DWORD, DWORD, LPOVERLAPPED);
 WINBASEAPI PVOID WINAPI LockResource (HGLOBAL);
 
+/* Microsoft's documentation suggests that LocalDiscard()
+ * should be defined as a macro; we prefer this intrinsic
+ * definition, since it has the effect of a macro, but it
+ * offers an added type checking benefit.
+ */
+_WIN32_INTRINSIC HLOCAL LocalDiscard (HLOCAL addr)
+{ return LocalReAlloc (addr, 0, LMEM_MOVEABLE); }
+
 #define LockSegment(w)  GlobalFix((HANDLE)(w)) /* Obsolete: Has no effect. */
 
 #define LogonUser __AW_SUFFIXED__(LogonUser)