Branch: Tag:

2020-09-29

2020-09-29 11:01:47 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler [Typechecker]: Fixed some bugs in remap_marker() et al.

The allocation and lookup of remapped markers now
seems to work as intended.

3723:   {    int ret;    -  if (!remap) return '0' | (marker & 0x0f); +  marker = marker & 0x0f;    -  if (flags & PT_FLAG_REMAP_SWAP_MARKERS) marker ^= 0x10; +  if (!remap) return '0' | marker;    -  if ((ret = remap->map[marker & 0x1f])) return ret; +  if (flags & PT_FLAG_REMAP_SWAP_MARKERS) marker |= 0x10;    -  +  if ((ret = remap->map[marker])) return ret; +     for (ret = 0; ret < 10; ret++) {    if (!(remap->allocated & (1 << ret))) {    remap->allocated |= (1 << ret);    ret |= '0'; -  remap->map[marker & 0x1f] = ret; +  remap->map[marker] = ret;    return ret;    }    }
3746:   {    int ret;    -  if (!remap) return '0' | (marker & 0x0f); +  marker = marker & 0x0f;    -  if (flags & PT_FLAG_REMAP_SWAP_MARKERS) marker ^= 0x10; +  if (!remap) return '0' | marker;    -  if ((ret = remap->map[marker & 0x1f])) return ret; +  if (flags & PT_FLAG_REMAP_SWAP_MARKERS) marker |= 0x10;    -  +  if ((ret = remap->map[marker])) return ret; +     for (ret = 0; ret < 10; ret++) {    if (!(remap->allocated & (1 << ret))) {    remap->allocated |= (1 << ret);    ret |= '0'; -  remap->map[marker & 0x1f] = ret; +  remap->map[marker] = ret;    return ret;    }    }
3771:       if (!remap) return;    -  if (flags & PT_FLAG_REMAP_SWAP_MARKERS) marker ^= 0x10; +  marker &= 0x0f;    -  if (!(m = remap->map[marker & 0x1f])) return; +  if (flags & PT_FLAG_REMAP_SWAP_MARKERS) marker |= 0x10;    -  remap->map[marker & 0x1f] = 0; +  if (!(m = remap->map[marker])) return; +  +  remap->map[marker] = 0;    remap->allocated &= ~(1 << (m & 0x0f));   }