https://bugs.winehq.org/show_bug.cgi?id=48323
Bug ID: 48323 Summary: scanf functions do not support NaN for floating point elements Product: Wine Version: 5.0-rc2 Hardware: x86 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: msvcrt Assignee: wine-bugs@winehq.org Reporter: codedonewell@gmail.com Distribution: ---
Created attachment 66042 --> https://bugs.winehq.org/attachment.cgi?id=66042 Return zero when NaN is found while parsing floats
Star Citizen PTU Version 3.8.0 is attempting to read float values from data files that contain the text "nan". The current scanf.h implementation does not consider NaNs. This prevents this version of Star Citizen from launching when run under wine. This version does launch under windows with the same account. I have tested a patch that returns zero when a NaN is encountered, which allows this version of Star Citizen to launch. There are several considerations to be addressed in this patch: 1 - it is not locale friendly; 2 - it updates the parse pointer as it checks for the text NAN, whcih means a failure will return an incorreclty update pointer; and 3 - it returns zero when NAN is encountered rather than NAN as returning NAN still breaks this version of Star Citizen. I am keen to work up a more appropriate patch, however I need guidance regarding the decision to return zero (rather than NaN - zero works for me but might be bad), and how to look-ahead when checking for "NaN" without updating the parse pointer.