Bug #2283
openRaw memory indexes on special chans are invalid
0%
Description
Many of the radios which have special channels do not implement their get_raw_memory correctly.
The majority of time special channels are stored in a 'Loc' with a negative number (0, -num_special_chans).
This is done so that the a) special channels appear in the memory editor prior to all other standard channels
and b) that they not conflict with the memory addresses of standard channels.
Most implementations of get_raw_memory; simply lookup in the radios channel memory by number; because in the case of
special channels memory number is typically negative, the memory address which gets indexed becomes nth index from the
end of the channel memory, which is not the memory location of the special channel.
As a result the raw memory display on special channels rarely shows the correct memory. Also, if a location arises
where the number special channels is greater than the number of channel memories; the app will crash.
Overall the treatment of special channels is not very indicative of how memory is typically stored on a device. For
example, it does not support very well the situation where channel memories and special memories are not stored
within the same contiguous block of memory.