Added memcpy_unaligned to libwine_port.
This commit is contained in:
parent
408d0fd626
commit
195574e2d8
|
@ -240,9 +240,12 @@ int usleep (unsigned int useconds);
|
|||
#endif /* !defined(HAVE_USLEEP) */
|
||||
|
||||
#ifdef __i386__
|
||||
#define wine_memcpy_unaligned memcpy
|
||||
extern inline void *memcpy_unaligned( void *dst, const void *src, size_t size )
|
||||
{
|
||||
return memcpy( dst, src, size );
|
||||
}
|
||||
#else
|
||||
extern void *wine_memcpy_unaligned( void *dst, const void *src, size_t size );
|
||||
extern void *memcpy_unaligned( void *dst, const void *src, size_t size );
|
||||
#endif /* __i386__ */
|
||||
|
||||
extern int mkstemps(char *template, int suffix_len);
|
||||
|
@ -314,6 +317,7 @@ extern long interlocked_xchg_add( long *dest, long incr );
|
|||
#define interlocked_xchg_ptr __WINE_NOT_PORTABLE(interlocked_xchg_ptr)
|
||||
#define interlocked_xchg_add __WINE_NOT_PORTABLE(interlocked_xchg_add)
|
||||
#define lstat __WINE_NOT_PORTABLE(lstat)
|
||||
#define memcpy_unaligned __WINE_NOT_PORTABLE(memcpy_unaligned)
|
||||
#define memmove __WINE_NOT_PORTABLE(memmove)
|
||||
#define pread __WINE_NOT_PORTABLE(pread)
|
||||
#define pwrite __WINE_NOT_PORTABLE(pwrite)
|
||||
|
|
|
@ -11,6 +11,7 @@ C_SRCS = \
|
|||
getpagesize.c \
|
||||
interlocked.c \
|
||||
lstat.c \
|
||||
memcpy_unaligned.c \
|
||||
memmove.c \
|
||||
mkstemps.c \
|
||||
pread.c \
|
||||
|
|
|
@ -0,0 +1,27 @@
|
|||
/*
|
||||
* Unaligned memcpy wrapper to defeat gcc optimizations.
|
||||
*
|
||||
* Copyright 1996 Alexandre Julliard
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2.1 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
#include "wine/port.h"
|
||||
|
||||
void *memcpy_unaligned( void *dst, const void *src, size_t size )
|
||||
{
|
||||
return memcpy( dst, src, size );
|
||||
}
|
|
@ -277,7 +277,7 @@ BOOL NE_InitResourceHandler( HMODULE16 hModule )
|
|||
|
||||
while(pTypeInfo->type_id)
|
||||
{
|
||||
wine_memcpy_unaligned( &pTypeInfo->resloader, &DefResourceHandlerProc, sizeof(FARPROC16) );
|
||||
memcpy_unaligned( &pTypeInfo->resloader, &DefResourceHandlerProc, sizeof(FARPROC16) );
|
||||
pTypeInfo = NEXT_TYPEINFO(pTypeInfo);
|
||||
}
|
||||
return TRUE;
|
||||
|
@ -303,8 +303,8 @@ FARPROC16 WINAPI SetResourceHandler16( HMODULE16 hModule, LPCSTR typeId,
|
|||
{
|
||||
if (!(pTypeInfo = NE_FindTypeSection( pResTab, pTypeInfo, typeId )))
|
||||
break;
|
||||
wine_memcpy_unaligned( &prevHandler, &pTypeInfo->resloader, sizeof(FARPROC16) );
|
||||
wine_memcpy_unaligned( &pTypeInfo->resloader, &resourceHandler, sizeof(FARPROC16) );
|
||||
memcpy_unaligned( &prevHandler, &pTypeInfo->resloader, sizeof(FARPROC16) );
|
||||
memcpy_unaligned( &pTypeInfo->resloader, &resourceHandler, sizeof(FARPROC16) );
|
||||
pTypeInfo = NEXT_TYPEINFO(pTypeInfo);
|
||||
}
|
||||
return prevHandler;
|
||||
|
@ -507,7 +507,7 @@ HGLOBAL16 NE_LoadResource( NE_MODULE *pModule, HRSRC16 hRsrc )
|
|||
else
|
||||
{
|
||||
FARPROC16 resloader;
|
||||
wine_memcpy_unaligned( &resloader, &pTypeInfo->resloader, sizeof(FARPROC16) );
|
||||
memcpy_unaligned( &resloader, &pTypeInfo->resloader, sizeof(FARPROC16) );
|
||||
if ( resloader && resloader != DefResourceHandlerProc )
|
||||
pNameInfo->handle = NE_CallTo16_word_www(
|
||||
resloader, pNameInfo->handle, pModule->self, hRsrc );
|
||||
|
|
Loading…
Reference in New Issue