Found by static analysis with PVS-Studio. Original check wasn't actually checking for OOB and would segfault in case of it.
some drivers have a bug bitwise converting floating point cbuf values to uint variables. This adds a workaround for these drivers to make all cbufs uint and convert to floating point as needed.