I haven't seen other cases but maybe if the entry is corrupted that could generate errors.
If data_runs is not nil (after the call to get_attribute(data,"\x80\x00\x00\x00") is because it has found the datarun/s of the file. Even if the file only have one datarun (that would be the worst case) the number of bytes would have to be longer than one. But, due to the limited information of MFT I'm not 100% sure.