mirror of
https://github.com/reactos/reactos.git
synced 2025-01-07 14:51:00 +00:00
Sync with trunk (48463)
svn path=/branches/reactos-yarotows/; revision=48464
This commit is contained in:
parent
5762f7b639
commit
96444b43c2
17 changed files with 577 additions and 608 deletions
|
@ -869,17 +869,12 @@ StretchDIBits(HDC hdc,
|
|||
}
|
||||
}
|
||||
#endif
|
||||
if ( iUsage ) // Save time, we only look at non RGB.
|
||||
{
|
||||
pConvertedInfo = ConvertBitmapInfo(lpBitsInfo, iUsage,
|
||||
&ConvertedInfoSize, FALSE);
|
||||
if (!pConvertedInfo)
|
||||
{
|
||||
pConvertedInfo = ConvertBitmapInfo(lpBitsInfo, iUsage,
|
||||
&ConvertedInfoSize, FALSE);
|
||||
if (!pConvertedInfo)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
pConvertedInfo = (PBITMAPINFO)lpBitsInfo;
|
||||
}
|
||||
|
||||
cjBmpScanSize = DIB_BitmapBitsSize((LPBITMAPINFO)pConvertedInfo);
|
||||
|
||||
|
|
|
@ -192,6 +192,13 @@ GetTextExtentExPointW(
|
|||
LPSIZE lpSize
|
||||
)
|
||||
{
|
||||
|
||||
if(nMaxExtent < -1)
|
||||
{
|
||||
SetLastError(ERROR_INVALID_PARAMETER);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return NtGdiGetTextExtentExW (
|
||||
hdc, (LPWSTR)lpszStr, cchString, nMaxExtent, (PULONG)lpnFit, (PULONG)alpDx, lpSize, 0 );
|
||||
}
|
||||
|
@ -216,6 +223,12 @@ GetTextExtentExPointA(
|
|||
LPWSTR lpszStrW;
|
||||
BOOL rc = 0;
|
||||
|
||||
if(nMaxExtent < -1)
|
||||
{
|
||||
SetLastError(ERROR_INVALID_PARAMETER);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
Status = HEAP_strdupA2W ( &lpszStrW, lpszStr );
|
||||
if (!NT_SUCCESS (Status))
|
||||
SetLastError (RtlNtStatusToDosError(Status));
|
||||
|
|
|
@ -972,7 +972,7 @@ ContainsPath(LPCWSTR name)
|
|||
{
|
||||
if (RtlDetermineDosPathNameType_U(name) != RtlPathTypeRelative) return TRUE;
|
||||
if (name[0] != '.') return FALSE;
|
||||
if (name[1] == '/' || name[1] == '\\') return TRUE;
|
||||
if (name[1] == '/' || name[1] == '\\' || name[1] == '\0') return TRUE;
|
||||
return (name[1] == '.' && (name[2] == '/' || name[2] == '\\'));
|
||||
}
|
||||
|
||||
|
|
|
@ -158,142 +158,6 @@ ConvertDefaultLocale(LCID lcid)
|
|||
}
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
* EnumDateFormatsExA (KERNEL32.@)
|
||||
*
|
||||
* FIXME: MSDN mentions only LOCALE_USE_CP_ACP, should we handle
|
||||
* LOCALE_NOUSEROVERRIDE here as well?
|
||||
*/
|
||||
BOOL
|
||||
WINAPI
|
||||
EnumDateFormatsExA(
|
||||
DATEFMT_ENUMPROCEXA lpDateFmtEnumProcEx,
|
||||
LCID Locale,
|
||||
DWORD dwFlags)
|
||||
{
|
||||
CALID cal_id;
|
||||
char szBuf[256];
|
||||
|
||||
if (!lpDateFmtEnumProcEx)
|
||||
{
|
||||
SetLastError(ERROR_INVALID_PARAMETER);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (!GetLocaleInfoW(Locale,
|
||||
LOCALE_ICALENDARTYPE|LOCALE_RETURN_NUMBER,
|
||||
(LPWSTR)&cal_id,
|
||||
sizeof(cal_id)/sizeof(WCHAR)))
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
switch (dwFlags & ~LOCALE_USE_CP_ACP)
|
||||
{
|
||||
case 0:
|
||||
case DATE_SHORTDATE:
|
||||
if (GetLocaleInfoA(Locale,
|
||||
LOCALE_SSHORTDATE | (dwFlags & LOCALE_USE_CP_ACP),
|
||||
szBuf, 256))
|
||||
{
|
||||
lpDateFmtEnumProcEx(szBuf, cal_id);
|
||||
}
|
||||
break;
|
||||
|
||||
case DATE_LONGDATE:
|
||||
if (GetLocaleInfoA(Locale,
|
||||
LOCALE_SLONGDATE | (dwFlags & LOCALE_USE_CP_ACP),
|
||||
szBuf, 256))
|
||||
{
|
||||
lpDateFmtEnumProcEx(szBuf, cal_id);
|
||||
}
|
||||
break;
|
||||
|
||||
case DATE_YEARMONTH:
|
||||
if (GetLocaleInfoA(Locale,
|
||||
LOCALE_SYEARMONTH | (dwFlags & LOCALE_USE_CP_ACP),
|
||||
szBuf, 256))
|
||||
{
|
||||
lpDateFmtEnumProcEx(szBuf, cal_id);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
SetLastError(ERROR_INVALID_FLAGS);
|
||||
return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
* EnumDateFormatsExW (KERNEL32.@)
|
||||
*/
|
||||
BOOL
|
||||
WINAPI
|
||||
EnumDateFormatsExW(
|
||||
DATEFMT_ENUMPROCEXW lpDateFmtEnumProcEx,
|
||||
LCID Locale,
|
||||
DWORD dwFlags)
|
||||
{
|
||||
CALID cal_id;
|
||||
WCHAR wbuf[256]; // FIXME
|
||||
|
||||
if (!lpDateFmtEnumProcEx)
|
||||
{
|
||||
SetLastError(ERROR_INVALID_PARAMETER);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (!GetLocaleInfoW(Locale,
|
||||
LOCALE_ICALENDARTYPE | LOCALE_RETURN_NUMBER,
|
||||
(LPWSTR)&cal_id,
|
||||
sizeof(cal_id)/sizeof(WCHAR)))
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
switch (dwFlags & ~LOCALE_USE_CP_ACP)
|
||||
{
|
||||
case 0:
|
||||
case DATE_SHORTDATE:
|
||||
if (GetLocaleInfoW(Locale,
|
||||
LOCALE_SSHORTDATE | (dwFlags & LOCALE_USE_CP_ACP),
|
||||
wbuf,
|
||||
256))
|
||||
{
|
||||
lpDateFmtEnumProcEx(wbuf, cal_id);
|
||||
}
|
||||
break;
|
||||
|
||||
case DATE_LONGDATE:
|
||||
if (GetLocaleInfoW(Locale,
|
||||
LOCALE_SLONGDATE | (dwFlags & LOCALE_USE_CP_ACP),
|
||||
wbuf,
|
||||
256))
|
||||
{
|
||||
lpDateFmtEnumProcEx(wbuf, cal_id);
|
||||
}
|
||||
break;
|
||||
|
||||
case DATE_YEARMONTH:
|
||||
if (GetLocaleInfoW(Locale,
|
||||
LOCALE_SYEARMONTH | (dwFlags & LOCALE_USE_CP_ACP),
|
||||
wbuf,
|
||||
256))
|
||||
{
|
||||
lpDateFmtEnumProcEx(wbuf, cal_id);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
SetLastError(ERROR_INVALID_FLAGS);
|
||||
return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
static BOOL NLS_RegEnumValue(HANDLE hKey, UINT ulIndex,
|
||||
LPWSTR szValueName, ULONG valueNameSize,
|
||||
LPWSTR szValueData, ULONG valueDataSize)
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -171,25 +171,40 @@ static HICON SIC_OverlayShortcutImage(HICON SourceIcon, BOOL large)
|
|||
goto fail;
|
||||
}
|
||||
|
||||
/* Copy the source xor bitmap to the target and clear out part of it by using
|
||||
the shortcut mask */
|
||||
/* Copy the source color bitmap to the target */
|
||||
if (! BitBlt(TargetDC, 0, 0, SourceBitmapInfo.bmWidth, SourceBitmapInfo.bmHeight,
|
||||
SourceDC, 0, 0, SRCCOPY) ||
|
||||
! BitBlt(TargetDC, 0, SourceBitmapInfo.bmHeight - ShortcutBitmapInfo.bmHeight,
|
||||
ShortcutBitmapInfo.bmWidth, ShortcutBitmapInfo.bmHeight,
|
||||
ShortcutDC, 0, 0, SRCAND))
|
||||
SourceDC, 0, 0, SRCCOPY)) goto fail;
|
||||
|
||||
/* Check if we can use alpha blending */
|
||||
if (ShortcutBitmapInfo.bmBitsPixel == 32)
|
||||
{
|
||||
goto fail;
|
||||
/* Use alpha blending to make sure the target alpha channel stays valid */
|
||||
if (NULL == SelectObject(ShortcutDC, ShortcutIconInfo.hbmColor)) goto fail;
|
||||
if (!GdiAlphaBlend(TargetDC, 0, SourceBitmapInfo.bmHeight - ShortcutBitmapInfo.bmHeight,
|
||||
ShortcutBitmapInfo.bmWidth, ShortcutBitmapInfo.bmHeight,
|
||||
ShortcutDC, 0, 0, ShortcutBitmapInfo.bmWidth, ShortcutBitmapInfo.bmHeight,
|
||||
(BLENDFUNCTION){AC_SRC_OVER, 0, 255, AC_SRC_ALPHA})) goto fail;
|
||||
}
|
||||
|
||||
if (NULL == SelectObject(ShortcutDC, ShortcutIconInfo.hbmColor)) goto fail;
|
||||
|
||||
/* Now put in the shortcut xor mask */
|
||||
if (! BitBlt(TargetDC, 0, SourceBitmapInfo.bmHeight - ShortcutBitmapInfo.bmHeight,
|
||||
ShortcutBitmapInfo.bmWidth, ShortcutBitmapInfo.bmHeight,
|
||||
ShortcutDC, 0, 0, SRCINVERT))
|
||||
else
|
||||
{
|
||||
goto fail;
|
||||
/* Copy the source xor bitmap to the target and clear out part of it by using
|
||||
the shortcut mask */
|
||||
if (! BitBlt(TargetDC, 0, SourceBitmapInfo.bmHeight - ShortcutBitmapInfo.bmHeight,
|
||||
ShortcutBitmapInfo.bmWidth, ShortcutBitmapInfo.bmHeight,
|
||||
ShortcutDC, 0, 0, SRCAND))
|
||||
{
|
||||
goto fail;
|
||||
}
|
||||
|
||||
if (NULL == SelectObject(ShortcutDC, ShortcutIconInfo.hbmColor)) goto fail;
|
||||
|
||||
/* Now put in the shortcut xor mask */
|
||||
if (! BitBlt(TargetDC, 0, SourceBitmapInfo.bmHeight - ShortcutBitmapInfo.bmHeight,
|
||||
ShortcutBitmapInfo.bmWidth, ShortcutBitmapInfo.bmHeight,
|
||||
ShortcutDC, 0, 0, SRCINVERT))
|
||||
{
|
||||
goto fail;
|
||||
}
|
||||
}
|
||||
|
||||
/* Clean up, we're not goto'ing to 'fail' after this so we can be lazy and not set
|
||||
|
@ -387,14 +402,14 @@ BOOL SIC_Initialize(void)
|
|||
if (sic_hdpa)
|
||||
{
|
||||
TRACE("Icon cache already initialized\n");
|
||||
return TRUE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
sic_hdpa = DPA_Create(16);
|
||||
if (!sic_hdpa)
|
||||
{
|
||||
sic_hdpa = DPA_Create(16);
|
||||
if (!sic_hdpa)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
hDC = CreateICW(L"DISPLAY", NULL, NULL, NULL);
|
||||
if (!hDC)
|
||||
|
@ -439,7 +454,7 @@ BOOL SIC_Initialize(void)
|
|||
100);
|
||||
if (ShellSmallIconList)
|
||||
{
|
||||
/* Load the document icon, which is used as the default if an icon isn't found. */
|
||||
/* Load the document icon, which is used as the default if an icon isn't found. */
|
||||
hSm = (HICON)LoadImageW(shell32_hInstance,
|
||||
MAKEINTRESOURCEW(IDI_SHELL_DOCUMENT),
|
||||
IMAGE_ICON,
|
||||
|
@ -459,7 +474,7 @@ BOOL SIC_Initialize(void)
|
|||
}
|
||||
|
||||
if (ShellBigIconList)
|
||||
{
|
||||
{
|
||||
hLg = (HICON)LoadImageW(shell32_hInstance,
|
||||
MAKEINTRESOURCEW(IDI_SHELL_DOCUMENT),
|
||||
IMAGE_ICON,
|
||||
|
@ -470,7 +485,7 @@ BOOL SIC_Initialize(void)
|
|||
{
|
||||
ERR("Failed to load IDI_SHELL_DOCUMENT icon2!\n");
|
||||
DestroyIcon(hSm);
|
||||
return FALSE;
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -482,9 +497,9 @@ BOOL SIC_Initialize(void)
|
|||
SIC_IconAppend(swShell32Name, IDI_SHELL_DOCUMENT-1, hSm, hLg, 0);
|
||||
SIC_IconAppend(swShell32Name, -IDI_SHELL_DOCUMENT, hSm, hLg, 0);
|
||||
|
||||
TRACE("hIconSmall=%p hIconBig=%p\n",ShellSmallIconList, ShellBigIconList);
|
||||
TRACE("hIconSmall=%p hIconBig=%p\n",ShellSmallIconList, ShellBigIconList);
|
||||
|
||||
return TRUE;
|
||||
return TRUE;
|
||||
}
|
||||
/*************************************************************************
|
||||
* SIC_Destroy
|
||||
|
@ -550,7 +565,7 @@ static int SIC_LoadOverlayIcon(int icon_idx)
|
|||
LPWSTR p = wcschr(buffer, ',');
|
||||
|
||||
if (p)
|
||||
*p++ = 0;
|
||||
*p++ = 0;
|
||||
|
||||
iconPath = buffer;
|
||||
iconIdx = _wtoi(p);
|
||||
|
|
|
@ -1172,11 +1172,11 @@ getservbyname(IN CONST CHAR FAR* name,
|
|||
PCHAR SystemDirectory = ServiceDBData; /* Reuse this stack space */
|
||||
PCHAR ServicesFileLocation = "\\drivers\\etc\\services";
|
||||
PCHAR ThisLine = 0, NextLine = 0, ServiceName = 0, PortNumberStr = 0,
|
||||
ProtocolStr = 0, Comment = 0;
|
||||
ProtocolStr = 0, Comment = 0, EndValid;
|
||||
PCHAR Aliases[WS2_INTERNAL_MAX_ALIAS] = { 0 };
|
||||
UINT i,SizeNeeded = 0,
|
||||
SystemDirSize = sizeof(ServiceDBData) - 1;
|
||||
DWORD ReadSize = 0, ValidData = 0;
|
||||
DWORD ReadSize = 0;
|
||||
PWINSOCK_THREAD_BLOCK p = NtCurrentTeb()->WinSockData;
|
||||
|
||||
if( !p )
|
||||
|
@ -1215,43 +1215,56 @@ getservbyname(IN CONST CHAR FAR* name,
|
|||
WSASetLastError( WSANO_RECOVERY );
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
/* Scan the services file ...
|
||||
*
|
||||
* We will read up to BUFSIZ bytes per pass, until the buffer does not
|
||||
* contain a full line, then we will try to read more.
|
||||
*
|
||||
* We fall from the loop if the buffer does not have a line terminator.
|
||||
*/
|
||||
|
||||
*
|
||||
* We will be share the buffer on the lines. If the line does not fit in
|
||||
* the buffer, then moving it to the beginning of the buffer and read
|
||||
* the remnants of line from file.
|
||||
*/
|
||||
|
||||
/* Initial Read */
|
||||
while(!Found &&
|
||||
ReadFile(ServicesFile,
|
||||
ServiceDBData + ValidData,
|
||||
sizeof( ServiceDBData ) - ValidData,
|
||||
&ReadSize,
|
||||
NULL))
|
||||
ReadFile(ServicesFile,
|
||||
ServiceDBData,
|
||||
sizeof( ServiceDBData ) - 1,
|
||||
&ReadSize, NULL );
|
||||
ThisLine = NextLine = ServiceDBData;
|
||||
EndValid = ServiceDBData + ReadSize;
|
||||
ServiceDBData[sizeof(ServiceDBData) - 1] = '\0';
|
||||
|
||||
while(ReadSize)
|
||||
{
|
||||
ValidData += ReadSize;
|
||||
ReadSize = 0;
|
||||
NextLine = ThisLine = ServiceDBData;
|
||||
|
||||
/* Find the beginning of the next line */
|
||||
while(NextLine < ServiceDBData + ValidData &&
|
||||
*NextLine != '\r' && *NextLine != '\n' )
|
||||
for(; *NextLine != '\r' && *NextLine != '\n'; NextLine++)
|
||||
{
|
||||
NextLine++;
|
||||
if(NextLine == EndValid)
|
||||
{
|
||||
int LineLen = NextLine - ThisLine;
|
||||
|
||||
if(ThisLine == ServiceDBData)
|
||||
{
|
||||
WS_DbgPrint(MIN_TRACE,("Line too long"));
|
||||
WSASetLastError( WSANO_RECOVERY );
|
||||
return NULL;
|
||||
}
|
||||
|
||||
memmove(ServiceDBData, ThisLine, LineLen);
|
||||
|
||||
ReadFile(ServicesFile, ServiceDBData + LineLen,
|
||||
sizeof( ServiceDBData )-1 - LineLen,
|
||||
&ReadSize, NULL );
|
||||
|
||||
EndValid = ServiceDBData + LineLen + ReadSize;
|
||||
NextLine = ServiceDBData + LineLen;
|
||||
ThisLine = ServiceDBData;
|
||||
|
||||
if(!ReadSize) break;
|
||||
}
|
||||
}
|
||||
|
||||
/* Zero and skip, so we can treat what we have as a string */
|
||||
if( NextLine > ServiceDBData + ValidData )
|
||||
break;
|
||||
|
||||
*NextLine = 0; NextLine++;
|
||||
|
||||
|
||||
*NextLine = '\0';
|
||||
Comment = strchr( ThisLine, '#' );
|
||||
if( Comment ) *Comment = 0; /* Terminate at comment start */
|
||||
|
||||
if( Comment ) *Comment = '\0'; /* Terminate at comment start */
|
||||
|
||||
if(DecodeServEntFromString(ThisLine,
|
||||
&ServiceName,
|
||||
&PortNumberStr,
|
||||
|
@ -1268,22 +1281,8 @@ getservbyname(IN CONST CHAR FAR* name,
|
|||
(NextLine - ThisLine);
|
||||
break;
|
||||
}
|
||||
|
||||
/* Get rid of everything we read so far */
|
||||
while( NextLine <= ServiceDBData + ValidData &&
|
||||
isspace( *NextLine ) )
|
||||
{
|
||||
NextLine++;
|
||||
}
|
||||
|
||||
WS_DbgPrint(MAX_TRACE,("About to move %d chars\n",
|
||||
ServiceDBData + ValidData - NextLine));
|
||||
|
||||
memmove(ServiceDBData,
|
||||
NextLine,
|
||||
ServiceDBData + ValidData - NextLine );
|
||||
ValidData -= NextLine - ServiceDBData;
|
||||
WS_DbgPrint(MAX_TRACE,("Valid bytes: %d\n", ValidData));
|
||||
NextLine++;
|
||||
ThisLine = NextLine;
|
||||
}
|
||||
|
||||
/* This we'll do no matter what */
|
||||
|
|
|
@ -522,7 +522,7 @@ VfatCreateFile ( PDEVICE_OBJECT DeviceObject, PIRP Irp )
|
|||
return(STATUS_OBJECT_NAME_INVALID);
|
||||
}
|
||||
}
|
||||
if (FileObject->RelatedFileObject && PathNameU.Length > sizeof(WCHAR) && PathNameU.Buffer[0] == L'\\')
|
||||
if (FileObject->RelatedFileObject && PathNameU.Length >= sizeof(WCHAR) && PathNameU.Buffer[0] == L'\\')
|
||||
{
|
||||
return(STATUS_OBJECT_NAME_INVALID);
|
||||
}
|
||||
|
|
|
@ -5,15 +5,68 @@
|
|||
#include <stdlib.h>
|
||||
#include <signal.h>
|
||||
|
||||
static const char formatstr[] =
|
||||
"Assertion failed!\n\n"
|
||||
"Program: %s\n"
|
||||
"File: %s\n"
|
||||
"Line: %ld\n\n"
|
||||
"Expression: %s\n"
|
||||
"Press Retry to debug the application\n";
|
||||
|
||||
|
||||
/*
|
||||
* @implemented
|
||||
*/
|
||||
void _assert(const char *msg, const char *file, unsigned line)
|
||||
void _assert(const char *exp, const char *file, unsigned line)
|
||||
{
|
||||
/* Assertion failed at foo.c line 45: x<y */
|
||||
fprintf(stderr, "Assertion failed at %s line %d: %s\n", file, line, msg);
|
||||
FIXME("Assertion failed at %s line %d: %s\n", file, line, msg);
|
||||
raise(SIGABRT);
|
||||
for(;;); /* eliminate warning by mingw */
|
||||
int (WINAPI *pMessageBoxA)(HWND, LPCTSTR, LPCTSTR, UINT);
|
||||
HMODULE hmodUser32;
|
||||
char achProgram[40];
|
||||
char *pszBuffer;
|
||||
int len;
|
||||
int iResult;
|
||||
|
||||
/* Assertion failed at foo.c line 45: x<y */
|
||||
fprintf(stderr, "Assertion failed at %s line %d: %s\n", file, line, exp);
|
||||
FIXME("Assertion failed at %s line %d: %s\n", file, line, exp);
|
||||
|
||||
/* Get MessageBoxA function pointer */
|
||||
hmodUser32 = LoadLibrary("user32.dll");
|
||||
pMessageBoxA = GetProcAddress(hmodUser32, "MessageBoxA");
|
||||
if (!pMessageBoxA)
|
||||
{
|
||||
abort();
|
||||
}
|
||||
|
||||
/* Get the file name of the module */
|
||||
len = GetModuleFileNameA(NULL, achProgram, 40);
|
||||
|
||||
/* Calculate full length of the message */
|
||||
len += sizeof(formatstr) + len + strlen(exp) + strlen(file);
|
||||
|
||||
/* Allocate a buffer */
|
||||
pszBuffer = malloc(len + 1);
|
||||
|
||||
/* Format a message */
|
||||
_snprintf(pszBuffer, len, formatstr, achProgram, file, line, exp);
|
||||
|
||||
/* Display a message box */
|
||||
iResult = pMessageBoxA(NULL,
|
||||
pszBuffer,
|
||||
"ReactOS C Runtime Library",
|
||||
MB_ABORTRETRYIGNORE | MB_ICONERROR);
|
||||
|
||||
free(pszBuffer);
|
||||
|
||||
/* Does the user want to abort? */
|
||||
if (iResult == IDABORT)
|
||||
{
|
||||
abort();
|
||||
}
|
||||
|
||||
/* Does the user want to debug? */
|
||||
if (iResult == IDRETRY)
|
||||
{
|
||||
__debugbreak();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -218,7 +218,7 @@ gdi32 -
|
|||
kernel32 -
|
||||
reactos/dll/win32/kernel32/misc/errormsg.c # Out of sync
|
||||
reactos/dll/win32/kernel32/misc/profile.c # Out of sync
|
||||
reactos/dll/win32/kernel32/misc/lcformat.c # Out of sync
|
||||
reactos/dll/win32/kernel32/misc/lcformat.c # Synced to Wine-1_3
|
||||
reactos/dll/win32/kernel32/misc/lzexpand.c # Synced to Wine-1_1_23
|
||||
|
||||
msvcrt -
|
||||
|
|
|
@ -28,59 +28,58 @@ FsRtlIsNameInExpressionPrivate(IN PUNICODE_STRING Expression,
|
|||
|
||||
while (i < Name->Length / sizeof(WCHAR) && k < Expression->Length / sizeof(WCHAR))
|
||||
{
|
||||
if ((Expression->Buffer[k] == (IgnoreCase ? UpcaseTable[Name->Buffer[i]] : Name->Buffer[i])) ||
|
||||
(Expression->Buffer[k] == L'?') || (Expression->Buffer[k] == DOS_QM) ||
|
||||
(Expression->Buffer[k] == DOS_DOT && (Name->Buffer[i] == L'.' || Name->Buffer[i] == L'0')))
|
||||
{
|
||||
i++;
|
||||
k++;
|
||||
}
|
||||
else if (Expression->Buffer[k] == L'*')
|
||||
{
|
||||
if (k < Expression->Length / sizeof(WCHAR))
|
||||
{
|
||||
if (Expression->Buffer[k+1] != L'*' && Expression->Buffer[k+1] != L'?' &&
|
||||
if ((Expression->Buffer[k] == (IgnoreCase ? UpcaseTable[Name->Buffer[i]] : Name->Buffer[i])) ||
|
||||
(Expression->Buffer[k] == L'?') || (Expression->Buffer[k] == DOS_QM) ||
|
||||
(Expression->Buffer[k] == DOS_DOT && (Name->Buffer[i] == L'.' || Name->Buffer[i] == L'0')))
|
||||
{
|
||||
i++;
|
||||
k++;
|
||||
}
|
||||
else if (Expression->Buffer[k] == L'*')
|
||||
{
|
||||
if (k < (Expression->Length / sizeof(WCHAR) - 1))
|
||||
{
|
||||
if (Expression->Buffer[k+1] != L'*' && Expression->Buffer[k+1] != L'?' &&
|
||||
Expression->Buffer[k+1] != DOS_DOT && Expression->Buffer[k+1] != DOS_QM &&
|
||||
Expression->Buffer[k+1] != DOS_STAR)
|
||||
{
|
||||
while ((IgnoreCase ? UpcaseTable[Name->Buffer[i]] : Name->Buffer[i]) != Expression->Buffer[k+1] &&
|
||||
i <= Name->Length / sizeof(WCHAR)) i++;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!(Expression->Buffer[k+1] != DOS_DOT && (Name->Buffer[i] == L'.' || Name->Buffer[i] == L'0')))
|
||||
{
|
||||
i++;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
i = Name->Length / sizeof(WCHAR);
|
||||
}
|
||||
k++;
|
||||
}
|
||||
else if (Expression->Buffer[k] == DOS_STAR)
|
||||
{
|
||||
j = i;
|
||||
while (j <= Name->Length / sizeof(WCHAR))
|
||||
{
|
||||
if (Name->Buffer[j] == L'.')
|
||||
{
|
||||
i = j;
|
||||
}
|
||||
j++;
|
||||
}
|
||||
k++;
|
||||
}
|
||||
else
|
||||
{
|
||||
i++;
|
||||
k = 0;
|
||||
}
|
||||
Expression->Buffer[k+1] != DOS_STAR)
|
||||
{
|
||||
while ((IgnoreCase ? UpcaseTable[Name->Buffer[i]] : Name->Buffer[i]) != Expression->Buffer[k+1] &&
|
||||
i < Name->Length / sizeof(WCHAR)) i++;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!(Expression->Buffer[k+1] != DOS_DOT && (Name->Buffer[i] == L'.' || Name->Buffer[i] == L'0')))
|
||||
{
|
||||
i++;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
i = Name->Length / sizeof(WCHAR);
|
||||
}
|
||||
k++;
|
||||
}
|
||||
else if (Expression->Buffer[k] == DOS_STAR)
|
||||
{
|
||||
j = i;
|
||||
while (j < Name->Length / sizeof(WCHAR))
|
||||
{
|
||||
if (Name->Buffer[j] == L'.')
|
||||
{
|
||||
i = j;
|
||||
}
|
||||
j++;
|
||||
}
|
||||
k++;
|
||||
}
|
||||
else
|
||||
{
|
||||
i = Name->Length / sizeof(WCHAR);
|
||||
}
|
||||
}
|
||||
|
||||
return (k == Expression->Length / sizeof(WCHAR));
|
||||
return (k == Expression->Length / sizeof(WCHAR) && i == Name->Length / sizeof(WCHAR));
|
||||
}
|
||||
|
||||
/* PUBLIC FUNCTIONS **********************************************************/
|
||||
|
|
|
@ -98,7 +98,7 @@ IopRemovePlugPlayEvent(VOID)
|
|||
/* Remove a pnp event entry from the tail of the queue */
|
||||
if (!IsListEmpty(&IopPnpEventQueueHead))
|
||||
{
|
||||
ExFreePool(RemoveTailList(&IopPnpEventQueueHead));
|
||||
ExFreePool(CONTAINING_RECORD(RemoveTailList(&IopPnpEventQueueHead), PNP_EVENT_ENTRY, ListEntry));
|
||||
}
|
||||
|
||||
/* Signal the next pnp event in the queue */
|
||||
|
|
|
@ -65,10 +65,10 @@ EXLATEOBJ_iXlateRGBtoBGR(PEXLATEOBJ pxlo, ULONG iColor)
|
|||
ULONG iNewColor;
|
||||
|
||||
/* Copy green */
|
||||
iNewColor = iColor & 0x00ff00;
|
||||
iNewColor = iColor & 0xff00ff00;
|
||||
|
||||
/* Mask red and blue */
|
||||
iColor &= 0xff00ff;
|
||||
iColor &= 0x00ff00ff;
|
||||
|
||||
/* Shift and copy red and blue */
|
||||
iNewColor |= iColor >> 16;
|
||||
|
|
|
@ -96,7 +96,7 @@ INT FASTCALL IntGdiAddFontResource(PUNICODE_STRING FileName, DWORD Characteristi
|
|||
ULONG FASTCALL ftGdiGetGlyphOutline(PDC,WCHAR,UINT,LPGLYPHMETRICS,ULONG,PVOID,LPMAT2,BOOL);
|
||||
INT FASTCALL IntGetOutlineTextMetrics(PFONTGDI,UINT,OUTLINETEXTMETRICW *);
|
||||
BOOL FASTCALL ftGdiGetRasterizerCaps(LPRASTERIZER_STATUS);
|
||||
BOOL FASTCALL TextIntGetTextExtentPoint(PDC,PTEXTOBJ,LPCWSTR,int,int,LPINT,LPINT,LPSIZE);
|
||||
BOOL FASTCALL TextIntGetTextExtentPoint(PDC,PTEXTOBJ,LPCWSTR,INT,ULONG,LPINT,LPINT,LPSIZE);
|
||||
BOOL FASTCALL ftGdiGetTextMetricsW(HDC,PTMW_INTERNAL);
|
||||
DWORD FASTCALL IntGetFontLanguageInfo(PDC);
|
||||
INT FASTCALL ftGdiGetTextCharsetInfo(PDC,PFONTSIGNATURE,DWORD);
|
||||
|
|
|
@ -5,7 +5,7 @@ NTSTATUS _MmCopyFromCaller( PVOID Target, PVOID Source, UINT Bytes ) {
|
|||
|
||||
_SEH2_TRY
|
||||
{
|
||||
/* ProbeForRead(Source,Bytes,1); */
|
||||
ProbeForRead(Source,Bytes,1);
|
||||
RtlCopyMemory(Target,Source,Bytes);
|
||||
}
|
||||
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
|
||||
|
|
|
@ -267,7 +267,16 @@ co_IntLoadSysMenuTemplate()
|
|||
if (NT_SUCCESS(Status))
|
||||
{
|
||||
/* Simulate old behaviour: copy into our local buffer */
|
||||
Result = *(LRESULT*)ResultPointer;
|
||||
_SEH2_TRY
|
||||
{
|
||||
ProbeForRead(ResultPointer, sizeof(LRESULT), 1);
|
||||
Result = *(LRESULT*)ResultPointer;
|
||||
}
|
||||
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
|
||||
{
|
||||
Result = 0;
|
||||
}
|
||||
_SEH2_END
|
||||
}
|
||||
|
||||
UserEnterCo();
|
||||
|
|
|
@ -2119,8 +2119,8 @@ FASTCALL
|
|||
TextIntGetTextExtentPoint(PDC dc,
|
||||
PTEXTOBJ TextObj,
|
||||
LPCWSTR String,
|
||||
int Count,
|
||||
int MaxExtent,
|
||||
INT Count,
|
||||
ULONG MaxExtent,
|
||||
LPINT Fit,
|
||||
LPINT Dx,
|
||||
LPSIZE Size)
|
||||
|
|
Loading…
Reference in a new issue