| ... | ... |
@@ -351,6 +351,8 @@ resolve(void) |
| 351 | 351 |
if(!(l = findlabel(r->name))) |
| 352 | 352 |
return error("Unknown relative reference", r->name);
|
| 353 | 353 |
p.data[r->addr + 1] = (Sint8)(l->addr - r->addr - 3); |
| 354 |
+ if((Sint8)p.data[r->addr + 1] != (l->addr - r->addr - 3)) |
|
| 355 |
+ return error("Relative reference is too far", r->name);
|
|
| 354 | 356 |
l->refs++; |
| 355 | 357 |
break; |
| 356 | 358 |
case ';': |