mirror of
https://git.code.sf.net/p/quake/quakeforge
synced 2024-11-29 07:32:02 +00:00
Fix a few strict aliasing warnings
gcc 13 got a little stricter on those (at least with gnu2x/c2x).
This commit is contained in:
parent
db889e5e54
commit
9d1c07d2ac
4 changed files with 42 additions and 30 deletions
|
@ -413,7 +413,7 @@ gl_R_InitSky (texture_t *mt)
|
|||
// make an average value for the back to avoid a fringe on the top level
|
||||
|
||||
r = g = b = 0;
|
||||
for (i = 0; i < 128; i++)
|
||||
for (i = 0; i < 128; i++) {
|
||||
for (j = 0; j < 128; j++) {
|
||||
p = src[i * 256 + j + 128];
|
||||
rgba = &d_8to24table[p];
|
||||
|
@ -422,11 +422,13 @@ gl_R_InitSky (texture_t *mt)
|
|||
g += ((byte *) rgba)[1];
|
||||
b += ((byte *) rgba)[2];
|
||||
}
|
||||
}
|
||||
r /= 128 * 128;
|
||||
g /= 128 * 128;
|
||||
b /= 128 * 128;
|
||||
|
||||
((byte *) & transpix)[0] = r / (128 * 128);
|
||||
((byte *) & transpix)[1] = g / (128 * 128);
|
||||
((byte *) & transpix)[2] = b / (128 * 128);
|
||||
((byte *) & transpix)[3] = 0;
|
||||
//FIXME assumes little endian
|
||||
transpix = ((b << 16) | (g << 8) | (r << 0)) & 0x00ffffff;
|
||||
|
||||
if (!gl_solidskytexture) {
|
||||
qfglGenTextures (1, &gl_solidskytexture);
|
||||
|
|
|
@ -57,6 +57,10 @@
|
|||
|
||||
#include "r_internal.h"
|
||||
|
||||
typedef struct pic_data_s {
|
||||
subpic_t *subpic;
|
||||
} picdata_t;
|
||||
|
||||
typedef struct cachepic_s {
|
||||
struct cachepic_s *next;
|
||||
char *name;
|
||||
|
@ -155,12 +159,12 @@ make_glpic (const char *name, qpic_t *p)
|
|||
qpic_t *pic = 0;
|
||||
|
||||
if (p) {
|
||||
pic = malloc (sizeof (qpic_t) + sizeof (subpic_t *));
|
||||
pic = malloc (field_offset (qpic_t, data[sizeof (picdata_t)]));
|
||||
pic->width = p->width;
|
||||
pic->height = p->height;
|
||||
subpic_t *sp = GLSL_ScrapSubpic (draw_scrap, pic->width, pic->height);
|
||||
*(subpic_t **) pic->data = sp;
|
||||
GLSL_SubpicUpdate (sp, p->data, 1);
|
||||
__auto_type pd = (picdata_t *) pic->data;
|
||||
pd->subpic = GLSL_ScrapSubpic (draw_scrap, pic->width, pic->height);
|
||||
GLSL_SubpicUpdate (pd->subpic, p->data, 1);
|
||||
}
|
||||
return pic;
|
||||
}
|
||||
|
@ -172,9 +176,9 @@ pic_free (qpic_t *pic)
|
|||
return;
|
||||
}
|
||||
|
||||
subpic_t *subpic = *(subpic_t **) pic->data;
|
||||
__auto_type pd = (picdata_t *) pic->data;
|
||||
|
||||
GLSL_SubpicDelete (subpic);
|
||||
GLSL_SubpicDelete (pd->subpic);
|
||||
free (pic);
|
||||
}
|
||||
|
||||
|
@ -225,7 +229,8 @@ make_quad (qpic_t *pic, float x, float y, int w, int h,
|
|||
int srcx, int srcy, int srcw, int srch, drawvert_t verts[6],
|
||||
float *color)
|
||||
{
|
||||
subpic_t *sp = *(subpic_t **) pic->data;
|
||||
__auto_type pd = (picdata_t *) pic->data;
|
||||
subpic_t *sp = pd->subpic;
|
||||
float sl, sh, tl, th;
|
||||
|
||||
srcx += sp->rect->x;
|
||||
|
@ -751,7 +756,8 @@ glsl_Draw_TileClear (int x, int y, int w, int h)
|
|||
static quat_t color = { 1, 1, 1, 1 };
|
||||
vrect_t *tile_rect = VRect_New (x, y, w, h);
|
||||
vrect_t *sub = VRect_New (0, 0, 0, 0); // filled in later;
|
||||
subpic_t *sp = *(subpic_t **) backtile_pic->data;
|
||||
__auto_type pd = (picdata_t *) backtile_pic->data;
|
||||
subpic_t *sp = pd->subpic;
|
||||
int sub_sx, sub_sy, sub_ex, sub_ey;
|
||||
int i, j;
|
||||
|
||||
|
@ -792,7 +798,8 @@ glsl_Draw_Fill (int x, int y, int w, int h, int c)
|
|||
void
|
||||
glsl_Draw_Line (int x0, int y0, int x1, int y1, int c)
|
||||
{
|
||||
subpic_t *sp = *(subpic_t **) white_pic->data;
|
||||
__auto_type pd = (picdata_t *) white_pic->data;
|
||||
subpic_t *sp = pd->subpic;
|
||||
float sl = sp->rect->x * sp->size;
|
||||
float sh = sp->rect->x * sp->size;
|
||||
float tl = sp->rect->y * sp->size;
|
||||
|
|
|
@ -288,12 +288,14 @@ QW_SendHearts (int sock, msghdr_t *msghdr, server_t *servers, int serverlen)
|
|||
for (i = 0; i < serverlen; i++) {
|
||||
if (servers[i].updated != 0) {
|
||||
unsigned char *p = out + (cpos * 6);
|
||||
p[0] = ((unsigned char *) &servers[i].addr.sin_addr.s_addr)[0];
|
||||
p[1] = ((unsigned char *) &servers[i].addr.sin_addr.s_addr)[1];
|
||||
p[2] = ((unsigned char *) &servers[i].addr.sin_addr.s_addr)[2];
|
||||
p[3] = ((unsigned char *) &servers[i].addr.sin_addr.s_addr)[3];
|
||||
p[4] = (unsigned char) (ntohs (servers[i].addr.sin_port) >> 8);
|
||||
p[5] = (unsigned char) (ntohs (servers[i].addr.sin_port) & 0xFF);
|
||||
in_addr_t addr = ntohl (servers[i].addr.sin_addr.s_addr);
|
||||
in_port_t port = ntohs (servers[i].addr.sin_port);
|
||||
p[0] = addr >> 24;
|
||||
p[1] = addr >> 16;
|
||||
p[2] = addr >> 8;
|
||||
p[3] = addr >> 0;
|
||||
p[4] = port >> 8;
|
||||
p[5] = port >> 0;
|
||||
++cpos;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -74,16 +74,17 @@ LoadTriangleList (char *filename, triangle_t **pptri, int *numtriangles)
|
|||
{
|
||||
QFile *input;
|
||||
char name[256], tex[256];
|
||||
float start, exitpattern, t;
|
||||
float start, exitpattern;
|
||||
int count, iLevel, magic, i;
|
||||
tf_triangle tri;
|
||||
triangle_t *ptri;
|
||||
|
||||
t = -FLOAT_START;
|
||||
*((unsigned char *) &exitpattern + 0) = *((unsigned char *) &t + 3);
|
||||
*((unsigned char *) &exitpattern + 1) = *((unsigned char *) &t + 2);
|
||||
*((unsigned char *) &exitpattern + 2) = *((unsigned char *) &t + 1);
|
||||
*((unsigned char *) &exitpattern + 3) = *((unsigned char *) &t + 0);
|
||||
// FIXME not sure if this should be BigFloat or FloatSwap
|
||||
exitpattern = BigFloat (FLOAT_END);
|
||||
//*((unsigned char *) &exitpattern + 0) = *((unsigned char *) &t + 3);
|
||||
//*((unsigned char *) &exitpattern + 1) = *((unsigned char *) &t + 2);
|
||||
//*((unsigned char *) &exitpattern + 2) = *((unsigned char *) &t + 1);
|
||||
//*((unsigned char *) &exitpattern + 3) = *((unsigned char *) &t + 0);
|
||||
|
||||
if ((input = Qopen(filename, "rb")) == 0) {
|
||||
fprintf (stderr,"reader: could not open file '%s'\n", filename);
|
||||
|
|
Loading…
Reference in a new issue