awslabs / aws-lambda-cpp

C++ implementation of the AWS Lambda runtime

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Apple clang v12: "implicit conversion loses integer precision"

zethon opened this issue · comments

commented

Trying to compile on MacOS with Clang 12 gives the following error:

$> cmake --build . -- -j 18
[4/5] Building CXX object CMakeFiles/aws-lambda-runtime.dir/src/backward.cpp.o
FAILED: CMakeFiles/aws-lambda-runtime.dir/src/backward.cpp.o
/Library/Developer/CommandLineTools/usr/bin/c++ -DAWS_LAMBDA_LOG=0 -I../include -O3 -DNDEBUG -flto=thin -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX11.1.sdk -mmacosx-version-min=10.15 -fno-exceptions -fno-rtti -fvisibility=hidden -fvisibility-inlines-hidden -Wall -Wextra -Werror -Wconversion -Wno-sign-conversion -std=gnu++11 -MD -MT CMakeFiles/aws-lambda-runtime.dir/src/backward.cpp.o -MF CMakeFiles/aws-lambda-runtime.dir/src/backward.cpp.o.d -o CMakeFiles/aws-lambda-runtime.dir/src/backward.cpp.o -c ../src/backward.cpp
In file included from ../src/backward.cpp:26:
../src/backward.h:3269:57: error: implicit conversion loses integer precision: 'size_t' (aka 'unsigned long') to 'int' [-Werror,-Wshorten-64-to-32]
        _symbols.reset(backtrace_symbols(st.begin(), st.size()));
                       ~~~~~~~~~~~~~~~~~             ~~~^~~~~~
../src/backward.h:3844:19: note: in instantiation of function template specialization 'backward::TraceResolverDarwinImpl<backward::trace_resolver_tag::backtrace_symbol>::load_stacktrace<backward::StackTrace>' requested here
        _resolver.load_stacktrace(st);
                  ^
../src/backward.h:3801:9: note: in instantiation of function template specialization 'backward::Printer::print_stacktrace<backward::StackTrace>' requested here
        print_stacktrace(st, os, colorize);
        ^
../src/backward.h:4055:17: note: in instantiation of function template specialization 'backward::Printer::print<backward::StackTrace>' requested here
        printer.print(st, stderr);
                ^
1 error generated.
ninja: build stopped: subcommand failed.

Changing line 3269 to:

_symbols.reset(backtrace_symbols(st.begin(), static_cast<int>(st.size())));

fixes the error.

I've merged #111 which should resolve this

commented

This will be an error if you ever turn on the old-style cast warning (which probably should be turned on).