* Fix some new GCC 4.3 warnings
* Fix many many strict aliasing warnings, now that it's re-enabled
This commit is contained in:
parent
7c19978aaa
commit
72dea0a184
19 changed files with 220 additions and 152 deletions
|
@ -567,7 +567,10 @@ Loads in the map and all submodels
|
|||
==================
|
||||
*/
|
||||
void CM_LoadMap( const char *name, qboolean clientload, int *checksum ) {
|
||||
int *buf;
|
||||
union {
|
||||
int *i;
|
||||
void *v;
|
||||
} buf;
|
||||
int i;
|
||||
dheader_t header;
|
||||
int length;
|
||||
|
@ -606,19 +609,19 @@ void CM_LoadMap( const char *name, qboolean clientload, int *checksum ) {
|
|||
// load the file
|
||||
//
|
||||
#ifndef BSPC
|
||||
length = FS_ReadFile( name, (void **)&buf );
|
||||
length = FS_ReadFile( name, &buf.v );
|
||||
#else
|
||||
length = LoadQuakeFile((quakefile_t *) name, (void **)&buf);
|
||||
length = LoadQuakeFile((quakefile_t *) name, &buf.v);
|
||||
#endif
|
||||
|
||||
if ( !buf ) {
|
||||
if ( !buf.i ) {
|
||||
Com_Error (ERR_DROP, "Couldn't load %s", name);
|
||||
}
|
||||
|
||||
last_checksum = LittleLong (Com_BlockChecksum (buf, length));
|
||||
last_checksum = LittleLong (Com_BlockChecksum (buf.i, length));
|
||||
*checksum = last_checksum;
|
||||
|
||||
header = *(dheader_t *)buf;
|
||||
header = *(dheader_t *)buf.i;
|
||||
for (i=0 ; i<sizeof(dheader_t)/4 ; i++) {
|
||||
((int *)&header)[i] = LittleLong ( ((int *)&header)[i]);
|
||||
}
|
||||
|
@ -628,7 +631,7 @@ void CM_LoadMap( const char *name, qboolean clientload, int *checksum ) {
|
|||
, name, header.version, BSP_VERSION );
|
||||
}
|
||||
|
||||
cmod_base = (byte *)buf;
|
||||
cmod_base = (byte *)buf.i;
|
||||
|
||||
// load into heap
|
||||
CMod_LoadShaders( &header.lumps[LUMP_SHADERS] );
|
||||
|
@ -645,7 +648,7 @@ void CM_LoadMap( const char *name, qboolean clientload, int *checksum ) {
|
|||
CMod_LoadPatches( &header.lumps[LUMP_SURFACES], &header.lumps[LUMP_DRAWVERTS] );
|
||||
|
||||
// we are NOT freeing the file, because it is cached for the ref
|
||||
FS_FreeFile (buf);
|
||||
FS_FreeFile (buf.v);
|
||||
|
||||
CM_InitBoxHull ();
|
||||
|
||||
|
|
|
@ -239,7 +239,10 @@ Cmd_Exec_f
|
|||
===============
|
||||
*/
|
||||
void Cmd_Exec_f( void ) {
|
||||
char *f;
|
||||
union {
|
||||
char *c;
|
||||
void *v;
|
||||
} f;
|
||||
int len;
|
||||
char filename[MAX_QPATH];
|
||||
|
||||
|
@ -249,17 +252,17 @@ void Cmd_Exec_f( void ) {
|
|||
}
|
||||
|
||||
Q_strncpyz( filename, Cmd_Argv(1), sizeof( filename ) );
|
||||
COM_DefaultExtension( filename, sizeof( filename ), ".cfg" );
|
||||
len = FS_ReadFile( filename, (void **)&f);
|
||||
if (!f) {
|
||||
COM_DefaultExtension( filename, sizeof( filename ), ".cfg" );
|
||||
len = FS_ReadFile( filename, &f.v);
|
||||
if (!f.c) {
|
||||
Com_Printf ("couldn't exec %s\n",Cmd_Argv(1));
|
||||
return;
|
||||
}
|
||||
Com_Printf ("execing %s\n",Cmd_Argv(1));
|
||||
|
||||
Cbuf_InsertText (f);
|
||||
Cbuf_InsertText (f.c);
|
||||
|
||||
FS_FreeFile (f);
|
||||
FS_FreeFile (f.v);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -786,7 +786,7 @@ NET_IPSocket
|
|||
int NET_IPSocket( char *net_interface, int port, int *err ) {
|
||||
SOCKET newsocket;
|
||||
struct sockaddr_in address;
|
||||
qboolean _true = qtrue;
|
||||
u_long _true = 1;
|
||||
int i = 1;
|
||||
|
||||
*err = 0;
|
||||
|
@ -804,7 +804,7 @@ int NET_IPSocket( char *net_interface, int port, int *err ) {
|
|||
return newsocket;
|
||||
}
|
||||
// make it non-blocking
|
||||
if( ioctlsocket( newsocket, FIONBIO, (u_long *)&_true ) == SOCKET_ERROR ) {
|
||||
if( ioctlsocket( newsocket, FIONBIO, &_true ) == SOCKET_ERROR ) {
|
||||
Com_Printf( "WARNING: NET_IPSocket: ioctl FIONBIO: %s\n", NET_ErrorString() );
|
||||
*err = socketError;
|
||||
closesocket(newsocket);
|
||||
|
@ -857,7 +857,7 @@ NET_IP6Socket
|
|||
int NET_IP6Socket( char *net_interface, int port, struct sockaddr_in6 *bindto, int *err ) {
|
||||
SOCKET newsocket;
|
||||
struct sockaddr_in6 address;
|
||||
qboolean _true = qtrue;
|
||||
u_long _true = 1;
|
||||
|
||||
*err = 0;
|
||||
|
||||
|
@ -879,7 +879,7 @@ int NET_IP6Socket( char *net_interface, int port, struct sockaddr_in6 *bindto, i
|
|||
}
|
||||
|
||||
// make it non-blocking
|
||||
if( ioctlsocket( newsocket, FIONBIO, (u_long *)&_true ) == SOCKET_ERROR ) {
|
||||
if( ioctlsocket( newsocket, FIONBIO, &_true ) == SOCKET_ERROR ) {
|
||||
Com_Printf( "WARNING: NET_IP6Socket: ioctl FIONBIO: %s\n", NET_ErrorString() );
|
||||
*err = socketError;
|
||||
closesocket(newsocket);
|
||||
|
|
|
@ -710,11 +710,12 @@ qboolean Q_isanumber( const char *s )
|
|||
return qfalse;
|
||||
#else
|
||||
char *p;
|
||||
double d;
|
||||
|
||||
if( *s == '\0' )
|
||||
return qfalse;
|
||||
|
||||
strtod( s, &p );
|
||||
d = strtod( s, &p );
|
||||
|
||||
return *p == '\0';
|
||||
#endif
|
||||
|
|
|
@ -1109,7 +1109,8 @@ static int unzlocal_getShort (FILE* fin, uLong *pX)
|
|||
{
|
||||
short v;
|
||||
|
||||
fread( &v, sizeof(v), 1, fin );
|
||||
size_t size;
|
||||
size = fread( &v, sizeof(v), 1, fin );
|
||||
|
||||
*pX = LittleShort( v);
|
||||
return UNZ_OK;
|
||||
|
@ -1138,7 +1139,8 @@ static int unzlocal_getLong (FILE *fin, uLong *pX)
|
|||
{
|
||||
int v;
|
||||
|
||||
fread( &v, sizeof(v), 1, fin );
|
||||
size_t size;
|
||||
size = fread( &v, sizeof(v), 1, fin );
|
||||
|
||||
*pX = LittleLong( v);
|
||||
return UNZ_OK;
|
||||
|
|
|
@ -218,7 +218,11 @@ VM_LoadSymbols
|
|||
*/
|
||||
void VM_LoadSymbols( vm_t *vm ) {
|
||||
int len;
|
||||
char *mapfile, *text_p, *token;
|
||||
union {
|
||||
char *c;
|
||||
void *v;
|
||||
} mapfile;
|
||||
char *text_p, *token;
|
||||
char name[MAX_QPATH];
|
||||
char symbols[MAX_QPATH];
|
||||
vmSymbol_t **prev, *sym;
|
||||
|
@ -235,8 +239,8 @@ void VM_LoadSymbols( vm_t *vm ) {
|
|||
|
||||
COM_StripExtension(vm->name, name, sizeof(name));
|
||||
Com_sprintf( symbols, sizeof( symbols ), "vm/%s.map", name );
|
||||
len = FS_ReadFile( symbols, (void **)&mapfile );
|
||||
if ( !mapfile ) {
|
||||
len = FS_ReadFile( symbols, &mapfile.v );
|
||||
if ( !mapfile.c ) {
|
||||
Com_Printf( "Couldn't load symbol file: %s\n", symbols );
|
||||
return;
|
||||
}
|
||||
|
@ -244,7 +248,7 @@ void VM_LoadSymbols( vm_t *vm ) {
|
|||
numInstructions = vm->instructionPointersLength >> 2;
|
||||
|
||||
// parse the symbols
|
||||
text_p = mapfile;
|
||||
text_p = mapfile.c;
|
||||
prev = &vm->symbols;
|
||||
count = 0;
|
||||
|
||||
|
@ -291,7 +295,7 @@ void VM_LoadSymbols( vm_t *vm ) {
|
|||
|
||||
vm->numSymbols = count;
|
||||
Com_Printf( "%i symbols parsed from %s\n", count, symbols );
|
||||
FS_FreeFile( mapfile );
|
||||
FS_FreeFile( mapfile.v );
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -364,47 +368,50 @@ vmHeader_t *VM_LoadQVM( vm_t *vm, qboolean alloc ) {
|
|||
int dataLength;
|
||||
int i;
|
||||
char filename[MAX_QPATH];
|
||||
vmHeader_t *header;
|
||||
union {
|
||||
vmHeader_t *h;
|
||||
void *v;
|
||||
} header;
|
||||
|
||||
// load the image
|
||||
Com_sprintf( filename, sizeof(filename), "vm/%s.qvm", vm->name );
|
||||
Com_Printf( "Loading vm file %s...\n", filename );
|
||||
length = FS_ReadFile( filename, (void **)&header );
|
||||
if ( !header ) {
|
||||
length = FS_ReadFile( filename, &header.v );
|
||||
if ( !header.h ) {
|
||||
Com_Printf( "Failed.\n" );
|
||||
VM_Free( vm );
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if( LittleLong( header->vmMagic ) == VM_MAGIC_VER2 ) {
|
||||
if( LittleLong( header.h->vmMagic ) == VM_MAGIC_VER2 ) {
|
||||
Com_Printf( "...which has vmMagic VM_MAGIC_VER2\n" );
|
||||
|
||||
// byte swap the header
|
||||
for ( i = 0 ; i < sizeof( vmHeader_t ) / 4 ; i++ ) {
|
||||
((int *)header)[i] = LittleLong( ((int *)header)[i] );
|
||||
((int *)header.h)[i] = LittleLong( ((int *)header.h)[i] );
|
||||
}
|
||||
|
||||
// validate
|
||||
if ( header->jtrgLength < 0
|
||||
|| header->bssLength < 0
|
||||
|| header->dataLength < 0
|
||||
|| header->litLength < 0
|
||||
|| header->codeLength <= 0 ) {
|
||||
if ( header.h->jtrgLength < 0
|
||||
|| header.h->bssLength < 0
|
||||
|| header.h->dataLength < 0
|
||||
|| header.h->litLength < 0
|
||||
|| header.h->codeLength <= 0 ) {
|
||||
VM_Free( vm );
|
||||
Com_Error( ERR_FATAL, "%s has bad header", filename );
|
||||
}
|
||||
} else if( LittleLong( header->vmMagic ) == VM_MAGIC ) {
|
||||
} else if( LittleLong( header.h->vmMagic ) == VM_MAGIC ) {
|
||||
// byte swap the header
|
||||
// sizeof( vmHeader_t ) - sizeof( int ) is the 1.32b vm header size
|
||||
for ( i = 0 ; i < ( sizeof( vmHeader_t ) - sizeof( int ) ) / 4 ; i++ ) {
|
||||
((int *)header)[i] = LittleLong( ((int *)header)[i] );
|
||||
((int *)header.h)[i] = LittleLong( ((int *)header.h)[i] );
|
||||
}
|
||||
|
||||
// validate
|
||||
if ( header->bssLength < 0
|
||||
|| header->dataLength < 0
|
||||
|| header->litLength < 0
|
||||
|| header->codeLength <= 0 ) {
|
||||
if ( header.h->bssLength < 0
|
||||
|| header.h->dataLength < 0
|
||||
|| header.h->litLength < 0
|
||||
|| header.h->codeLength <= 0 ) {
|
||||
VM_Free( vm );
|
||||
Com_Error( ERR_FATAL, "%s has bad header", filename );
|
||||
}
|
||||
|
@ -416,7 +423,7 @@ vmHeader_t *VM_LoadQVM( vm_t *vm, qboolean alloc ) {
|
|||
|
||||
// round up to next power of 2 so all data operations can
|
||||
// be mask protected
|
||||
dataLength = header->dataLength + header->litLength + header->bssLength;
|
||||
dataLength = header.h->dataLength + header.h->litLength + header.h->bssLength;
|
||||
for ( i = 0 ; dataLength > ( 1 << i ) ; i++ ) {
|
||||
}
|
||||
dataLength = 1 << i;
|
||||
|
@ -431,33 +438,34 @@ vmHeader_t *VM_LoadQVM( vm_t *vm, qboolean alloc ) {
|
|||
}
|
||||
|
||||
// copy the intialized data
|
||||
Com_Memcpy( vm->dataBase, (byte *)header + header->dataOffset, header->dataLength + header->litLength );
|
||||
Com_Memcpy( vm->dataBase, (byte *)header.h + header.h->dataOffset,
|
||||
header.h->dataLength + header.h->litLength );
|
||||
|
||||
// byte swap the longs
|
||||
for ( i = 0 ; i < header->dataLength ; i += 4 ) {
|
||||
for ( i = 0 ; i < header.h->dataLength ; i += 4 ) {
|
||||
*(int *)(vm->dataBase + i) = LittleLong( *(int *)(vm->dataBase + i ) );
|
||||
}
|
||||
|
||||
if( header->vmMagic == VM_MAGIC_VER2 ) {
|
||||
vm->numJumpTableTargets = header->jtrgLength >> 2;
|
||||
if( header.h->vmMagic == VM_MAGIC_VER2 ) {
|
||||
vm->numJumpTableTargets = header.h->jtrgLength >> 2;
|
||||
Com_Printf( "Loading %d jump table targets\n", vm->numJumpTableTargets );
|
||||
|
||||
if( alloc ) {
|
||||
vm->jumpTableTargets = Hunk_Alloc( header->jtrgLength, h_high );
|
||||
vm->jumpTableTargets = Hunk_Alloc( header.h->jtrgLength, h_high );
|
||||
} else {
|
||||
Com_Memset( vm->jumpTableTargets, 0, header->jtrgLength );
|
||||
Com_Memset( vm->jumpTableTargets, 0, header.h->jtrgLength );
|
||||
}
|
||||
|
||||
Com_Memcpy( vm->jumpTableTargets, (byte *)header + header->dataOffset +
|
||||
header->dataLength + header->litLength, header->jtrgLength );
|
||||
Com_Memcpy( vm->jumpTableTargets, (byte *)header.h + header.h->dataOffset +
|
||||
header.h->dataLength + header.h->litLength, header.h->jtrgLength );
|
||||
|
||||
// byte swap the longs
|
||||
for ( i = 0 ; i < header->jtrgLength ; i += 4 ) {
|
||||
for ( i = 0 ; i < header.h->jtrgLength ; i += 4 ) {
|
||||
*(int *)(vm->jumpTableTargets + i) = LittleLong( *(int *)(vm->jumpTableTargets + i ) );
|
||||
}
|
||||
}
|
||||
|
||||
return header;
|
||||
return header.h;
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue