Bug T63326 is caused by a floating point comparison of style a == b which fails due to precission errors. This patch fixes this. Note that the *pos variables are incremented by 0.1 and because of that a difference of 1e-2 is accurate enough.
Details
Diff Detail
Event Timeline
We have compare_ff() in BLI_math, better to use it. Also think 1e-6f would be a better epsilon value here, we want it to be as small as possible (pretty sure you can find users doing crazy stuff and needing sub-millisecond precision ;) ).
For some reason frame numbers here are stored as frame / 100 = frame * 1e-2. I suggest to use 1e-3 for the epsilon.
1e-2 seems too big because it matches one frame step, while 1e-6 will give issues with large frame numbers.
Updated with compare_ff according to Bastien's request. I used Brecht's suggestion for the limit as I agree with him that 1e-6 would be too small if there is a significant number of shape keys.
Committed in rB2a79e3463130: Fix T63326: absolute shape keys inserted from Python in wrong order. but I forgot to link it to this diff.