Browse Source

Fix more UBSAN errors

pull/428/head
Gleb Mazovetskiy 6 years ago committed by Anders Jenbo
parent
commit
ef20d1a038
  1. 2
      Source/effects.cpp
  2. 30
      Source/missiles.cpp
  3. 2
      Source/render.cpp

2
Source/effects.cpp

@ -1008,7 +1008,7 @@ BOOL calc_snd_position(int x, int y, int *plVolume, int *plPan)
x -= plr[myplr].WorldX;
y -= plr[myplr].WorldY;
pan = (x - y) << 8;
pan = (x - y) * 256;
*plPan = pan;
if (abs(pan) > 6400)

30
Source/missiles.cpp

@ -366,8 +366,8 @@ void GetMissileVel(int i, int sx, int sy, int dx, int dy, int v)
double dxp, dyp, dr;
if (dx != sx || dy != sy) {
dxp = (dx + sy - sx - dy) << 21;
dyp = (dy + dx - sx - sy) << 21;
dxp = (dx + sy - sx - dy) * (1 << 21);
dyp = (dy + dx - sx - sy) * (1 << 21);
dr = sqrt(dxp * dxp + dyp * dyp);
missile[i]._mixvel = (dxp * (v << 16)) / dr;
missile[i]._miyvel = (dyp * (v << 15)) / dr;
@ -405,24 +405,24 @@ void GetMissilePos(int i)
dx = mx + 2 * my;
dy = 2 * my - mx;
if (dx < 0) {
lx = -(-dx >> 3);
dx = -(-dx >> 6);
lx = -(-dx / 8);
dx = -(-dx / 64);
} else {
lx = dx >> 3;
dx = dx >> 6;
lx = dx / 8;
dx = dx / 64;
}
if (dy < 0) {
ly = -(-dy >> 3);
dy = -(-dy >> 6);
ly = -(-dy / 8);
dy = -(-dy / 64);
} else {
ly = dy >> 3;
dy = dy >> 6;
ly = dy / 8;
dy = dy / 64;
}
missile[i]._mix = dx + missile[i]._misx;
missile[i]._miy = dy + missile[i]._misy;
missile[i]._mixoff = mx + (dy << 5) - (dx << 5);
missile[i]._miyoff = my - (dx << 4) - (dy << 4);
ChangeLightOff(missile[i]._mlid, lx - (dx << 3), ly - (dy << 3));
missile[i]._mixoff = mx + (dy * 32) - (dx * 32);
missile[i]._miyoff = my - (dx * 16) - (dy * 16);
ChangeLightOff(missile[i]._mlid, lx - (dx * 8), ly - (dy * 8));
}
void MoveMissilePos(int i)
@ -694,7 +694,7 @@ BOOL PlayerMHit(int pnum, int m, int dist, int mind, int maxd, int mtype, BOOLEA
tac = plr[pnum]._pIAC + plr[pnum]._pIBonusAC + plr[pnum]._pDexterity / 5;
if (m != -1) {
hper = monster[m].mHit
+ ((monster[m].mLevel - plr[pnum]._pLevel) << 1)
+ ((monster[m].mLevel - plr[pnum]._pLevel) * 2)
+ 30
- (dist << 1) - tac;
} else {
@ -764,7 +764,7 @@ BOOL PlayerMHit(int pnum, int m, int dist, int mind, int maxd, int mtype, BOOLEA
dam = (mind << 6) + random_(75, (maxd - mind + 1) << 6);
if (m == -1 && plr[pnum]._pIFlags & ISPL_ABSHALFTRAP)
dam >>= 1;
dam += (plr[pnum]._pIGetHit << 6);
dam += (plr[pnum]._pIGetHit * 64);
} else {
dam = mind + random_(75, maxd - mind + 1);
if (m == -1 && plr[pnum]._pIFlags & ISPL_ABSHALFTRAP)

2
Source/render.cpp

@ -192,7 +192,7 @@ RenderTile(BYTE *pBuff)
case RT_TRANSPARENT:
for (i = 32; i != 0; i--, dst -= BUFFER_WIDTH + 32, mask--) {
m = *mask;
for (j = 32; j != 0; j -= v, m <<= v) {
for (j = 32; j != 0; j -= v, v == 32 ? m = 0 : m <<= v) {
v = *src++;
if (v >= 0) {
RenderLine(&dst, &src, v, tbl, m);

Loading…
Cancel
Save