Skip to content

Premature termination in delta compression decode #6

@dollarbin

Description

@dollarbin

if bitshift(buffer(1), 12, 'int16') == 0

Thank you for this code, I can't express how much time this has saved me in not dealing with Chemstation software directly. I'm noticing a small bug when decoding HPLC files (file ID 130). If buffer(1) is a factor of 16, the last four bits are all zero ending the decode and truncating the data. The program only checks the last 4 bits--is there a reason why it doesn't look at the entire int16 number it loads into buffer(1)? I don't have access to every type of .ch file but I can only find one case out of tens of thousands of files where the last two bytes aren't zero, an obviously corrupt file.

I checked 23913 ".ch" files from several different types of detectors (DAD, FLD and RID) and it seems to occur in some RID1A.ch and DAD1A.ch files, 541 out of 12093 times for RID1A and 109 out of 5620 times for DAD1A.

I changed the line to
if buffer(1) == 0
and it seems to work, but I don't know if this would break compatibility with some other file types.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions