diff options
author | Alyssa Milburn | 2011-06-23 10:27:54 +0200 |
---|---|---|
committer | Alyssa Milburn | 2011-06-23 10:28:43 +0200 |
commit | 92f4b7c611f0c317805e79a62ed883614572d9dd (patch) | |
tree | 1bc4e64537ba40ff12c46216419667ba422cd8bc | |
parent | e972c6cfd87cb5cbf1e93cf481f53add88655c42 (diff) | |
download | scummvm-rg350-92f4b7c611f0c317805e79a62ed883614572d9dd.tar.gz scummvm-rg350-92f4b7c611f0c317805e79a62ed883614572d9dd.tar.bz2 scummvm-rg350-92f4b7c611f0c317805e79a62ed883614572d9dd.zip |
BASE: Fix build, and error handling in DO_OPTION_INT.
This fixes the logic of 979fc29b (I hope) and includes some missing
headers.
-rw-r--r-- | base/commandLine.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/base/commandLine.cpp b/base/commandLine.cpp index 6d187ac8b1..6cb858525e 100644 --- a/base/commandLine.cpp +++ b/base/commandLine.cpp @@ -25,6 +25,9 @@ #define FORBIDDEN_SYMBOL_EXCEPTION_exit +#include <errno.h> +#include <limits.h> + #include "engines/metaengine.h" #include "base/commandLine.h" #include "base/plugins.h" @@ -267,8 +270,9 @@ void registerDefaults() { #define DO_OPTION_INT(shortCmd, longCmd) \ DO_OPTION(shortCmd, longCmd) \ char *endptr = 0; \ + errno = 0; \ long int retval = strtol(option, &endptr, 0); \ - if (endptr == NULL || *endptr != 0 || retval == 0 || retval == LONG_MAX || retval == LONG_MIN || errno == ERANGE) \ + if (endptr == NULL || *endptr != 0 || (errno != 0 && retval == 0) || (errno == ERANGE && (retval == LONG_MAX || retval == LONG_MIN))) \ usage("--%s: Invalid number '%s'", longCmd, option); // Use this for boolean options; this distinguishes between "-x" and "-X", |