diff --git a/args.c b/args.c index e12f16bed..a54cbf82f 100644 --- a/args.c +++ b/args.c @@ -9,6 +9,7 @@ * PATENTS file, you can obtain it at www.aomedia.org/license/patent. */ +#include #include #include #include @@ -119,13 +120,13 @@ void arg_show_usage(FILE *fp, const struct arg_def *const *defs) { } unsigned int arg_parse_uint(const struct arg *arg) { - long int rawval; + uint32_t rawval; char *endptr; - rawval = strtol(arg->val, &endptr, 10); + rawval = strtoul(arg->val, &endptr, 10); if (arg->val[0] != '\0' && endptr[0] == '\0') { - if (rawval >= 0 && rawval <= UINT_MAX) return rawval; + if (rawval <= UINT_MAX) return rawval; die("Option %s: Value %ld out of range for unsigned int\n", arg->name, rawval); @@ -136,7 +137,7 @@ unsigned int arg_parse_uint(const struct arg *arg) { } int arg_parse_int(const struct arg *arg) { - long int rawval; + int32_t rawval; char *endptr; rawval = strtol(arg->val, &endptr, 10); diff --git a/configure b/configure index 1bc0863e6..e671aa53e 100755 --- a/configure +++ b/configure @@ -605,6 +605,7 @@ process_toolchain() { check_add_cflags -Wimplicit-function-declaration check_add_cflags -Wuninitialized check_add_cflags -Wunused-variable + check_add_cflags -Wsign-compare case ${CC} in *clang*) ;; *) check_add_cflags -Wunused-but-set-variable ;; diff --git a/examples/aom_cx_set_ref.c b/examples/aom_cx_set_ref.c index 43e8fe069..fdb9739bc 100644 --- a/examples/aom_cx_set_ref.c +++ b/examples/aom_cx_set_ref.c @@ -307,6 +307,7 @@ int main(int argc, char **argv) { const char *height_arg = NULL; const char *infile_arg = NULL; const char *outfile_arg = NULL; + const char *update_frame_num_arg = NULL; unsigned int limit = 0; exec_name = argv[0]; @@ -317,18 +318,21 @@ int main(int argc, char **argv) { height_arg = argv[3]; infile_arg = argv[4]; outfile_arg = argv[5]; + update_frame_num_arg = argv[6]; encoder = get_aom_encoder_by_name(codec_arg); if (!encoder) die("Unsupported codec."); - update_frame_num = atoi(argv[6]); + update_frame_num = (unsigned int)strtoul(update_frame_num_arg, NULL, 0); // In AV1, the reference buffers (cm->buffer_pool->frame_bufs[i].buf) are // allocated while calling aom_codec_encode(), thus, setting reference for // 1st frame isn't supported. - if (update_frame_num <= 1) die("Couldn't parse frame number '%s'\n", argv[6]); + if (update_frame_num <= 1) { + die("Couldn't parse frame number '%s'\n", update_frame_num_arg); + } if (argc > 7) { - limit = atoi(argv[7]); + limit = (unsigned int)strtoul(argv[7], NULL, 0); if (update_frame_num > limit) die("Update frame number couldn't larger than limit\n"); }