EDuke32 Changelog Unofficial archive

Build 2394

1 March 2012 · 2 commits by 1 author · SVN

Builds by month 18 builds

Original log file · 20120301-2394.txt
------------------------------------------------------------------------
r2394 | helixhorned | 2012-03-01 15:36:11 -0800 (Thu, 01 Mar 2012) | 3 lines

Define strtoll to _strtoi64 on MSVC.

Usage of a search machine by Hendricks.
------------------------------------------------------------------------
r2393 | helixhorned | 2012-03-01 15:35:53 -0800 (Thu, 01 Mar 2012) | 1 line

When failing to open a savegame file for writing, print the reason to the log.
------------------------------------------------------------------------
r2392 | helixhorned | 2012-02-29 07:27:40 -0800 (Wed, 29 Feb 2012) | 16 lines

More rebust (and "correct"/expected) decimal number parsing in CON.

The replacement of atoi with strtol in r2374 had the side-effect that numbers
out of the range of a 32-bit integer were being returned as LONG_MAX/LONG_MIN
instead of being converted by taking the bits and re-interpreting them (note
that it was a coincidence that atoi behaved that way; to be strict, the
behavior was undefined and there is no regression).

Now, we implement parsing decimal integers using strtoll (with assuming
"long long" being the same as int64_t) and check in which range the number
falls.  If it's in the range (INT32_MAX <= x <= UINT32_MAX), issue a warning;
if it's not in (INT32_MIN <= x <= UINT32_MAX), warn too (though this better
ought to be an error?).  In each case, the bit representation is converted to
the CON number type (int32 to assume maximum portability) by re-interpreting
the bits [this is the same as an int/int cast, with GCC at least; more
generally, it's implementation-defined per C99].
------------------------------------------------------------------------
FixCON
Already listed in build 2392

More rebust (and "correct"/expected) decimal number parsing in CON.

Philipp Kutin (Helixhorned) 29 Feb 2012, 07:27 UTC−8 r2392

The replacement of atoi with strtol in r2374 had the side-effect that numbers out of the range of a 32-bit integer were being returned as LONG_MAX/LONG_MIN instead of being converted by taking the bits and re-interpreting them (note that it was a coincidence that atoi behaved that way; to be strict, the behavior was undefined and there is no regression). Now, we implement parsing decimal integers using strtoll (with assuming "long long" being the same as int64_t) and check in which range the number falls. If it's in the range (INT32_MAX <= x <= UINT32_MAX), issue a warning; if it's not in (INT32_MIN <= x <= UINT32_MAX), warn too (though this better ought to be an error?). In each case, the bit representation is converted to the CON number type (int32 to assume maximum portability) by re-interpreting the bits [this is the same as an int/int cast, with GCC at least; more generally, it's implementation-defined per C99].