aboutsummaryrefslogtreecommitdiffstats
path: root/code/qcommon
diff options
context:
space:
mode:
authortma <tma@edf5b092-35ff-0310-97b2-ce42778d08ea>2008-11-10 23:55:22 +0000
committertma <tma@edf5b092-35ff-0310-97b2-ce42778d08ea>2008-11-10 23:55:22 +0000
commit8ba546241137c6c1c43751b25e40bbaf610658a1 (patch)
treea677c3ad74326acc217842a2d927328597cfe3c8 /code/qcommon
parentb1613ef65246cc89a1e40e35c6e07080c56ea00b (diff)
downloadioquake3-aero-8ba546241137c6c1c43751b25e40bbaf610658a1.tar.gz
ioquake3-aero-8ba546241137c6c1c43751b25e40bbaf610658a1.zip
* Fix some new GCC 4.3 warnings
* Fix many many strict aliasing warnings, now that it's re-enabled git-svn-id: svn://svn.icculus.org/quake3/trunk@1487 edf5b092-35ff-0310-97b2-ce42778d08ea
Diffstat (limited to 'code/qcommon')
-rw-r--r--code/qcommon/cm_load.c19
-rw-r--r--code/qcommon/cmd.c15
-rw-r--r--code/qcommon/net_ip.c8
-rw-r--r--code/qcommon/q_shared.c3
-rw-r--r--code/qcommon/unzip.c6
-rw-r--r--code/qcommon/vm.c72
6 files changed, 70 insertions, 53 deletions
diff --git a/code/qcommon/cm_load.c b/code/qcommon/cm_load.c
index 175f138..a06358b 100644
--- a/code/qcommon/cm_load.c
+++ b/code/qcommon/cm_load.c
@@ -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 ();
diff --git a/code/qcommon/cmd.c b/code/qcommon/cmd.c
index 1f05452..08af301 100644
--- a/code/qcommon/cmd.c
+++ b/code/qcommon/cmd.c
@@ -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);
}
diff --git a/code/qcommon/net_ip.c b/code/qcommon/net_ip.c
index 05a17a4..8ac39a5 100644
--- a/code/qcommon/net_ip.c
+++ b/code/qcommon/net_ip.c
@@ -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);
diff --git a/code/qcommon/q_shared.c b/code/qcommon/q_shared.c
index 1ddab8d..550d100 100644
--- a/code/qcommon/q_shared.c
+++ b/code/qcommon/q_shared.c
@@ -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
diff --git a/code/qcommon/unzip.c b/code/qcommon/unzip.c
index 90f5354..7669aa9 100644
--- a/code/qcommon/unzip.c
+++ b/code/qcommon/unzip.c
@@ -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;
diff --git a/code/qcommon/vm.c b/code/qcommon/vm.c
index c2efcd2..dceec4a 100644
--- a/code/qcommon/vm.c
+++ b/code/qcommon/vm.c
@@ -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;
}
/*