diff --git a/src/hw_ostc_parser.c b/src/hw_ostc_parser.c index 9782fd7..5e866f6 100644 --- a/src/hw_ostc_parser.c +++ b/src/hw_ostc_parser.c @@ -1049,8 +1049,12 @@ hw_ostc_parser_samples_foreach (dc_parser_t *abstract, dc_sample_callback_t call return DC_STATUS_DATAFORMAT; } unsigned int idx = data[offset]; - if (idx < 1 || idx > parser->ngasmixes) { - ERROR(abstract->context, "Invalid gas mix."); + if (parser->model == OSTC4 && ccr && idx > parser->nfixed) { + // Fix the OSTC4 diluent index. + idx -= parser->nfixed; + } + if (idx < 1 || idx > parser->nfixed) { + ERROR(abstract->context, "Invalid gas mix (%u).", idx); return DC_STATUS_DATAFORMAT; } idx--; /* Convert to a zero based index. */