@zirias a long way down the line a map of which pointers were never initialised to point to data has a mismatch with data output by concatenating the data pointed to with runs of zeros for null pointers. Changing the params to calloc seems to fix it (cf other reply in thread), which makes no sense at all. Weekend time now I think.
`.udp_volts` is a char***
(a few lines earlier there's a `sub[slot].udp_volts = calloc(MAX_INPUTS + 1, sizeof(char **));` )