Skip to content

Commit

Permalink
code review fixes
Browse files Browse the repository at this point in the history
 - made 16-bit check an assertion (jump should be handled properly)
 - use ((narrow type)delta != delta) for checking overflow
 - fix printf long long
 - improve error message
  • Loading branch information
MartinNowak committed Sep 21, 2011
1 parent c64fa52 commit 0b93685
Showing 1 changed file with 8 additions and 15 deletions.
23 changes: 8 additions & 15 deletions src/backend/cod3.c
Original file line number Diff line number Diff line change
Expand Up @@ -5613,7 +5613,6 @@ STATIC void do16bit(enum FL fl,union evc *uev,int flags)
{ char *p;
symbol *s;
targ_size_t ad;
targ_ptrdiff_t delta;

switch (fl)
{
Expand Down Expand Up @@ -5668,17 +5667,13 @@ STATIC void do16bit(enum FL fl,union evc *uev,int flags)
}
break;
case FLblock: /* displacement to another block */
delta = uev->Vblock->Boffset - OFFSET() - 2;
if (delta > 0x7FFF || delta < (short)0x8000)
ad = uev->Vblock->Boffset - OFFSET() - 2;
#ifdef DEBUG
{
if (uev->Vblock->Bsrcpos.Slinnum)
fprintf(stderr, "%s(%d): overflow %d for block displacement.\n",
uev->Vblock->Bsrcpos.Sfilename, uev->Vblock->Bsrcpos.Slinnum, delta);
else
fprintf(stderr, "Error: overflow %d for block displacement.\n", delta);
err_exit();
targ_ptrdiff_t delta = uev->Vblock->Boffset - OFFSET() - 2;
assert((signed short)delta == delta);
}
ad = delta;
#endif
L1:
GENP(2,&ad); // displacement
return;
Expand Down Expand Up @@ -5708,13 +5703,11 @@ STATIC void do8bit(enum FL fl,union evc *uev)
break;
case FLblock:
delta = uev->Vblock->Boffset - OFFSET() - 1;
if (delta > 0x7F || delta < (char)0x80)
if ((signed char)delta != delta)
{
if (uev->Vblock->Bsrcpos.Slinnum)
fprintf(stderr, "%s(%d): overflow %d for block displacement.\n",
uev->Vblock->Bsrcpos.Sfilename, uev->Vblock->Bsrcpos.Slinnum, delta);
else
fprintf(stderr, "Error: overflow %d for block displacement.\n", delta);
fprintf(stderr, "%s(%d): ", uev->Vblock->Bsrcpos.Sfilename, uev->Vblock->Bsrcpos.Slinnum);
fprintf(stderr, "block displacement of %lld exceeds the maximum offset of -128 to 127.\n", (long long)delta);
err_exit();
}
c = delta;
Expand Down

0 comments on commit 0b93685

Please sign in to comment.