mirror of
https://github.com/libretro/scummvm.git
synced 2024-12-11 11:45:21 +00:00
BASE: Mess with strtol error handling some more.
WinCE's strtol can't actually do proper error handling because it is lacking errno, so just check the bounds instead. If you really have some need to pass LONG_MIN/LONG_MAX as command-line parameters then it could always be #ifdeffed, but I'm assuming no-one cares.
This commit is contained in:
parent
3f4d2c8130
commit
1b6453dff4
@ -25,7 +25,7 @@
|
||||
|
||||
#define FORBIDDEN_SYMBOL_EXCEPTION_exit
|
||||
|
||||
#include <errno.h>
|
||||
#include <limits.h>
|
||||
|
||||
#include "engines/metaengine.h"
|
||||
#include "base/commandLine.h"
|
||||
@ -266,12 +266,12 @@ void registerDefaults() {
|
||||
if (!option) usage("Option '%s' requires an argument", argv[isLongCmd ? i : i-1]);
|
||||
|
||||
// Use this for options which have a required integer value
|
||||
// (we don't check ERANGE because WinCE doesn't support errno, so we're stuck just rejecting LONG_MAX/LONG_MIN..)
|
||||
#define DO_OPTION_INT(shortCmd, longCmd) \
|
||||
DO_OPTION(shortCmd, longCmd) \
|
||||
char *endptr; \
|
||||
errno = 0; \
|
||||
strtol(option, &endptr, 0); \
|
||||
if (*endptr != '\0' || errno == ERANGE) \
|
||||
long int retval = strtol(option, &endptr, 0); \
|
||||
if (*endptr != '\0' || retval == LONG_MAX || retval == LONG_MIN) \
|
||||
usage("--%s: Invalid number '%s'", longCmd, option);
|
||||
|
||||
// Use this for boolean options; this distinguishes between "-x" and "-X",
|
||||
|
Loading…
Reference in New Issue
Block a user