Fix some crash on bad parameter conditions.
This commit is contained in:
parent
54dfe595ca
commit
4f34b18929
|
@ -15,15 +15,26 @@
|
||||||
#include "windef.h"
|
#include "windef.h"
|
||||||
#include "winbase.h"
|
#include "winbase.h"
|
||||||
#include "winnls.h"
|
#include "winnls.h"
|
||||||
|
#include "winerror.h"
|
||||||
#include "wine/winbase16.h"
|
#include "wine/winbase16.h"
|
||||||
#include "wine/winuser16.h"
|
#include "wine/winuser16.h"
|
||||||
#include "wine/unicode.h"
|
#include "wine/unicode.h"
|
||||||
|
#include "wine/exception.h"
|
||||||
|
|
||||||
#include "heap.h"
|
#include "heap.h"
|
||||||
#include "debugtools.h"
|
#include "debugtools.h"
|
||||||
|
|
||||||
DEFAULT_DEBUG_CHANNEL(resource);
|
DEFAULT_DEBUG_CHANNEL(resource);
|
||||||
|
|
||||||
|
/* filter for page-fault exceptions */
|
||||||
|
static WINE_EXCEPTION_FILTER(page_fault)
|
||||||
|
{
|
||||||
|
if (GetExceptionCode() == EXCEPTION_ACCESS_VIOLATION ||
|
||||||
|
GetExceptionCode() == EXCEPTION_PRIV_INSTRUCTION)
|
||||||
|
return EXCEPTION_EXECUTE_HANDLER;
|
||||||
|
return EXCEPTION_CONTINUE_SEARCH;
|
||||||
|
}
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
* AnsiToOem16 (KEYBOARD.5)
|
* AnsiToOem16 (KEYBOARD.5)
|
||||||
*/
|
*/
|
||||||
|
@ -334,19 +345,24 @@ BOOL WINAPI OemToCharW( LPCSTR s, LPWSTR d )
|
||||||
*/
|
*/
|
||||||
LPSTR WINAPI CharLowerA(LPSTR x)
|
LPSTR WINAPI CharLowerA(LPSTR x)
|
||||||
{
|
{
|
||||||
LPSTR s;
|
if (!HIWORD(x)) return (LPSTR)tolower((char)(int)x);
|
||||||
|
|
||||||
if (HIWORD(x))
|
__TRY
|
||||||
{
|
{
|
||||||
s=x;
|
LPSTR s = x;
|
||||||
while (*s)
|
while (*s)
|
||||||
{
|
{
|
||||||
*s=tolower(*s);
|
*s=tolower(*s);
|
||||||
s++;
|
s++;
|
||||||
}
|
}
|
||||||
return x;
|
|
||||||
}
|
}
|
||||||
else return (LPSTR)tolower((char)(int)x);
|
__EXCEPT(page_fault)
|
||||||
|
{
|
||||||
|
SetLastError( ERROR_INVALID_PARAMETER );
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
__ENDTRY
|
||||||
|
return x;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -356,7 +372,9 @@ LPSTR WINAPI CharLowerA(LPSTR x)
|
||||||
*/
|
*/
|
||||||
LPSTR WINAPI CharUpperA(LPSTR x)
|
LPSTR WINAPI CharUpperA(LPSTR x)
|
||||||
{
|
{
|
||||||
if (HIWORD(x))
|
if (!HIWORD(x)) return (LPSTR)toupper((char)(int)x);
|
||||||
|
|
||||||
|
__TRY
|
||||||
{
|
{
|
||||||
LPSTR s = x;
|
LPSTR s = x;
|
||||||
while (*s)
|
while (*s)
|
||||||
|
@ -364,9 +382,14 @@ LPSTR WINAPI CharUpperA(LPSTR x)
|
||||||
*s=toupper(*s);
|
*s=toupper(*s);
|
||||||
s++;
|
s++;
|
||||||
}
|
}
|
||||||
return x;
|
|
||||||
}
|
}
|
||||||
return (LPSTR)toupper((char)(int)x);
|
__EXCEPT(page_fault)
|
||||||
|
{
|
||||||
|
SetLastError( ERROR_INVALID_PARAMETER );
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
__ENDTRY
|
||||||
|
return x;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue