Skip to content

cland-tidy-19 warnings on Bitcoin Core CI #153

Closed
@hebasto

Description

@hebasto

From https://api.cirrus-ci.com/v1/task/5153787565834240/logs/ci.log:

[10:01:13.083] [315/704][22.3s] clang-tidy-19 -p=/ci_container_base/ci/scratch/build-x86_64-pc-linux-gnu -quiet -load=/tidy-build/libbitcoin-tidy.so /ci_container_base/src/ipc/libmultiprocess/src/mp/gen.cpp
[10:01:13.083] /ci_container_base/src/ipc/libmultiprocess/src/mp/gen.cpp:217:5: warning: use a ranges version of this algorithm [modernize-use-ranges]
[10:01:13.083]   217 |     std::transform(guard.begin(), guard.end(), guard.begin(), [](unsigned char c) -> unsigned char {
[10:01:13.083]       |     ^~~~~~~~~~~~~~ ~~~~~~~~~~~~~  ~~~~~~~~~~~
[10:01:13.083]       |     std::ranges::transform guard
...
[10:04:02.737] /ci_container_base/src/ipc/libmultiprocess/include/mp/proxy-types.h:109:5: warning: Address of stack memory associated with temporary object of type '(lambda at /ci_container_base/src/ipc/libmultiprocess/include/mp/proxy-types.h:109:51)' is still referred to by a temporary object on the stack upon returning to the caller.  This will be a dangling reference [clang-analyzer-core.StackAddressEscape]
[10:04:02.737]   109 |     return ReadDestEmplace{TypeList<LocalType>(), [&](auto&&... args) -> decltype(auto) {
[10:04:02.737]       |     ^
[10:04:02.737] /ci_container_base/ci/scratch/build-x86_64-pc-linux-gnu/src/ipc/libmultiprocess/test/mp/test/foo.capnp.proxy-server.c++:41:12: note: Calling 'serverInvoke<mp::ProxyServer<mp::test::messages::FooInterface>, capnp::CallContext<mp::test::messages::FooInterface::PassCustomParams, mp::test::messages::FooInterface::PassCustomResults>, mp::ServerField<1, mp::Accessor<mp::foo_fields::Arg, 17>, mp::ServerRet<mp::Accessor<mp::foo_fields::Result, 18>, mp::ServerCall>>>'
[10:04:02.737]    41 |     return serverInvoke(*this, call_context, MakeServerField<1, Accessor<foo_fields::Arg, FIELD_IN | FIELD_BOXED>>(Make<ServerRet, Accessor<foo_fields::Result, FIELD_OUT | FIELD_BOXED>>(ServerCall())));
[10:04:02.737]       |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[10:04:02.737] /ci_container_base/src/ipc/libmultiprocess/include/mp/proxy-types.h:699:16: note: Calling 'ReplaceVoid<(lambda at /ci_container_base/src/ipc/libmultiprocess/include/mp/proxy-types.h:699:28), (lambda at /ci_container_base/src/ipc/libmultiprocess/include/mp/proxy-types.h:700:13)>'
[10:04:02.737]   699 |         return ReplaceVoid([&]() { return fn.invoke(server_context, ArgList()); },
[10:04:02.737]       |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[10:04:02.737]   700 |             [&]() { return kj::Promise<CallContext>(kj::mv(call_context)); })
[10:04:02.737]       |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[10:04:02.737] /ci_container_base/src/ipc/libmultiprocess/include/mp/proxy-types.h:656:5: note: Calling 'operator()'
[10:04:02.737]   656 |     fn();
[10:04:02.737]       |     ^~~~
[10:04:02.737] /ci_container_base/src/ipc/libmultiprocess/include/mp/proxy-types.h:699:43: note: Calling 'ServerField::invoke'
[10:04:02.737]   699 |         return ReplaceVoid([&]() { return fn.invoke(server_context, ArgList()); },
[10:04:02.737]       |                                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[10:04:02.737] /ci_container_base/src/ipc/libmultiprocess/include/mp/proxy-types.h:529:16: note: Calling 'PassField<mp::Accessor<mp::foo_fields::Arg, 17>, mp::test::FooCustom, mp::ServerInvokeContext<mp::ProxyServer<mp::test::messages::FooInterface>, capnp::CallContext<mp::test::messages::FooInterface::PassCustomParams, mp::test::messages::FooInterface::PassCustomResults>>, const mp::ServerRet<mp::Accessor<mp::foo_fields::Result, 18>, mp::ServerCall> &, mp::TypeList<>>'
[10:04:02.737]   529 |         return PassField<Accessor>(Priority<2>(),
[10:04:02.737]       |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[10:04:02.737]   530 |             typename Split<argc, ArgTypes>::First(),
[10:04:02.737]       |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[10:04:02.737]   531 |             server_context,
[10:04:02.737]       |             ~~~~~~~~~~~~~~~
[10:04:02.737]   532 |             this->parent(),
[10:04:02.738]       |             ~~~~~~~~~~~~~~~
[10:04:02.738]   533 |             typename Split<argc, ArgTypes>::Second(),
[10:04:02.738]       |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[10:04:02.738]   534 |             std::forward<Args>(args)...);
[10:04:02.738]       |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[10:04:02.738] /ci_container_base/src/ipc/libmultiprocess/include/mp/proxy-types.h:272:5: note: Calling 'MaybeReadField<mp::TypeList<mp::test::FooCustom>, mp::InvokeContext &, mp::StructField<mp::Accessor<mp::foo_fields::Arg, 17>, const mp::test::messages::FooInterface::PassCustomParams::Reader>, mp::ReadDestEmplace<mp::test::FooCustom, (lambda at /ci_container_base/src/ipc/libmultiprocess/include/mp/proxy-types.h:273:83)>>'
[10:04:02.738]   272 |     MaybeReadField(std::integral_constant<bool, Accessor::in>(), TypeList<ArgType>(), invoke_context,
[10:04:02.738]       |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[10:04:02.738]   273 |         Make<StructField, Accessor>(params), ReadDestEmplace(TypeList<ArgType>(), [&](auto&&... args) -> auto& {
[10:04:02.738]       |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[10:04:02.738]   274 |             param.emplace(std::forward<decltype(args)>(args)...);
[10:04:02.738]       |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[10:04:02.738]   275 |             return *param;
[10:04:02.738]       |             ~~~~~~~~~~~~~~
[10:04:02.738]   276 |         }));
[10:04:02.738]       |         ~~~
[10:04:02.738] /ci_container_base/src/ipc/libmultiprocess/include/mp/proxy-types.h:244:5: note: Calling 'ReadField<mp::test::FooCustom, mp::InvokeContext &, mp::StructField<mp::Accessor<mp::foo_fields::Arg, 17>, const mp::test::messages::FooInterface::PassCustomParams::Reader>, mp::ReadDestEmplace<mp::test::FooCustom, (lambda at /ci_container_base/src/ipc/libmultiprocess/include/mp/proxy-types.h:273:83)>>'
[10:04:02.738]   244 |     ReadField(std::forward<Args>(args)...);
[10:04:02.738]       |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[10:04:02.738] /ci_container_base/src/ipc/libmultiprocess/include/mp/proxy-types.h:147:12: note: Calling 'CustomReadField<mp::StructField<mp::Accessor<mp::foo_fields::Arg, 17>, const mp::test::messages::FooInterface::PassCustomParams::Reader>, mp::ReadDestEmplace<mp::test::FooCustom, (lambda at /ci_container_base/src/ipc/libmultiprocess/include/mp/proxy-types.h:273:83)>>'
[10:04:02.738]   147 |     return CustomReadField(TypeList<RemoveCvRef<LocalTypes>...>(), Priority<2>(), std::forward<Args>(args)...);
[10:04:02.738]       |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[10:04:02.738] /ci_container_base/src/ipc/libmultiprocess/test/mp/test/foo-types.h:35:12: note: Calling 'ReadDestEmplace::update'
[10:04:02.738]    35 |     return read_dest.update([&](FooCustom& value) {
[10:04:02.738]       |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[10:04:02.738]    36 |         value.v1 = ReadField(TypeList<std::string>(), invoke_context, mp::Make<mp::ValueField>(custom.getV1()), ReadDestTemp<std::string>());
[10:04:02.738]       |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[10:04:02.738]    37 |         value.v2 = custom.getV2();
[10:04:02.738]       |         ~~~~~~~~~~~~~~~~~~~~~~~~~~
[10:04:02.738]    38 |     });
[10:04:02.738]       |     ~~
[10:04:02.738] /ci_container_base/src/ipc/libmultiprocess/include/mp/proxy-types.h:87:23: note: 'is_const_v' is false
[10:04:02.738]    87 |         if constexpr (std::is_const_v<std::remove_reference_t<std::invoke_result_t<EmplaceFn>>>) {
[10:04:02.738]       |                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[10:04:02.738] /ci_container_base/src/ipc/libmultiprocess/include/mp/proxy-types.h:87:9: note: Taking false branch
[10:04:02.738]    87 |         if constexpr (std::is_const_v<std::remove_reference_t<std::invoke_result_t<EmplaceFn>>>) {
[10:04:02.738]       |         ^
[10:04:02.738] /ci_container_base/src/ipc/libmultiprocess/include/mp/proxy-types.h:97:13: note: Calling 'operator()'
[10:04:02.738]    97 |             update_fn(temp);
[10:04:02.738]       |             ^~~~~~~~~~~~~~~
[10:04:02.738] /ci_container_base/src/ipc/libmultiprocess/test/mp/test/foo-types.h:36:113: note: Calling 'ReadDestTemp<std::basic_string<char>>'
[10:04:02.738]    36 |         value.v1 = ReadField(TypeList<std::string>(), invoke_context, mp::Make<mp::ValueField>(custom.getV1()), ReadDestTemp<std::string>());
[10:04:02.738]       |                                                                                                                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~
[10:04:02.738] /ci_container_base/src/ipc/libmultiprocess/include/mp/proxy-types.h:109:5: note: Address of stack memory associated with temporary object of type '(lambda at /ci_container_base/src/ipc/libmultiprocess/include/mp/proxy-types.h:109:51)' is still referred to by a temporary object on the stack upon returning to the caller.  This will be a dangling reference
[10:04:02.738]   109 |     return ReadDestEmplace{TypeList<LocalType>(), [&](auto&&... args) -> decltype(auto) {
[10:04:02.738]       |     ^                                             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[10:04:02.738]   110 |         return LocalType{std::forward<decltype(args)>(args)...};
[10:04:02.738]       |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[10:04:02.738]   111 |     }};
[10:04:02.738]       |     ~
[10:04:02.738] /ci_container_base/src/ipc/libmultiprocess/include/mp/type-number.h:55:32: warning: The value '0' provided to the cast expression is not in the valid range of values for 'FooEnum' [clang-analyzer-optin.core.EnumCastOutOfRange]
[10:04:02.738]    55 |     return read_dest.construct(static_cast<LocalType>(input.get()));
[10:04:02.738]       |                                ^
[10:04:02.738] /ci_container_base/src/ipc/libmultiprocess/test/mp/test/foo.h:24:12: note: enum declared here
[10:04:02.738]    24 | enum class FooEnum : uint8_t { ONE = 1, TWO = 2, };
[10:04:02.738]       | ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[10:04:02.738] /ci_container_base/ci/scratch/build-x86_64-pc-linux-gnu/src/ipc/libmultiprocess/test/mp/test/foo.capnp.proxy-server.c++:53:12: note: Calling 'serverInvoke<mp::ProxyServer<mp::test::messages::FooInterface>, capnp::CallContext<mp::test::messages::FooInterface::PassEnumParams, mp::test::messages::FooInterface::PassEnumResults>, mp::ServerField<1, mp::Accessor<mp::foo_fields::Arg, 1>, mp::ServerRet<mp::Accessor<mp::foo_fields::Result, 2>, mp::ServerCall>>>'
[10:04:02.738]    53 |     return serverInvoke(*this, call_context, MakeServerField<1, Accessor<foo_fields::Arg, FIELD_IN>>(Make<ServerRet, Accessor<foo_fields::Result, FIELD_OUT>>(ServerCall())));
[10:04:02.738]       |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[10:04:02.738] /ci_container_base/src/ipc/libmultiprocess/include/mp/proxy-types.h:699:16: note: Calling 'ReplaceVoid<(lambda at /ci_container_base/src/ipc/libmultiprocess/include/mp/proxy-types.h:699:28), (lambda at /ci_container_base/src/ipc/libmultiprocess/include/mp/proxy-types.h:700:13)>'
[10:04:02.738]   699 |         return ReplaceVoid([&]() { return fn.invoke(server_context, ArgList()); },
[10:04:02.738]       |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[10:04:02.738]   700 |             [&]() { return kj::Promise<CallContext>(kj::mv(call_context)); })
[10:04:02.738]       |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[10:04:02.738] /ci_container_base/src/ipc/libmultiprocess/include/mp/proxy-types.h:656:5: note: Calling 'operator()'
[10:04:02.738]   656 |     fn();
[10:04:02.738]       |     ^~~~
[10:04:02.738] /ci_container_base/src/ipc/libmultiprocess/include/mp/proxy-types.h:699:43: note: Calling 'ServerField::invoke'
[10:04:02.738]   699 |         return ReplaceVoid([&]() { return fn.invoke(server_context, ArgList()); },
[10:04:02.738]       |                                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[10:04:02.738] /ci_container_base/src/ipc/libmultiprocess/include/mp/proxy-types.h:529:16: note: Calling 'PassField<mp::Accessor<mp::foo_fields::Arg, 1>, mp::test::FooEnum, mp::ServerInvokeContext<mp::ProxyServer<mp::test::messages::FooInterface>, capnp::CallContext<mp::test::messages::FooInterface::PassEnumParams, mp::test::messages::FooInterface::PassEnumResults>>, const mp::ServerRet<mp::Accessor<mp::foo_fields::Result, 2>, mp::ServerCall> &, mp::TypeList<>>'
[10:04:02.738]   529 |         return PassField<Accessor>(Priority<2>(),
[10:04:02.738]       |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[10:04:02.738]   530 |             typename Split<argc, ArgTypes>::First(),
[10:04:02.738]       |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[10:04:02.738]   531 |             server_context,
[10:04:02.738]       |             ~~~~~~~~~~~~~~~
[10:04:02.738]   532 |             this->parent(),
[10:04:02.738]       |             ~~~~~~~~~~~~~~~
[10:04:02.738]   533 |             typename Split<argc, ArgTypes>::Second(),
[10:04:02.738]       |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[10:04:02.738]   534 |             std::forward<Args>(args)...);
[10:04:02.738]       |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[10:04:02.738] /ci_container_base/src/ipc/libmultiprocess/include/mp/proxy-types.h:272:5: note: Calling 'MaybeReadField<mp::TypeList<mp::test::FooEnum>, mp::InvokeContext &, mp::StructField<mp::Accessor<mp::foo_fields::Arg, 1>, const mp::test::messages::FooInterface::PassEnumParams::Reader>, mp::ReadDestEmplace<mp::test::FooEnum, (lambda at /ci_container_base/src/ipc/libmultiprocess/include/mp/proxy-types.h:273:83)>>'
[10:04:02.738]   272 |     MaybeReadField(std::integral_constant<bool, Accessor::in>(), TypeList<ArgType>(), invoke_context,
[10:04:02.738]       |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[10:04:02.738]   273 |         Make<StructField, Accessor>(params), ReadDestEmplace(TypeList<ArgType>(), [&](auto&&... args) -> auto& {
[10:04:02.738]       |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[10:04:02.738]   274 |             param.emplace(std::forward<decltype(args)>(args)...);
[10:04:02.738]       |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[10:04:02.738]   275 |             return *param;
[10:04:02.738]       |             ~~~~~~~~~~~~~~
[10:04:02.738]   276 |         }));
[10:04:02.738]       |         ~~~
[10:04:02.738] /ci_container_base/src/ipc/libmultiprocess/include/mp/proxy-types.h:244:5: note: Calling 'ReadField<mp::test::FooEnum, mp::InvokeContext &, mp::StructField<mp::Accessor<mp::foo_fields::Arg, 1>, const mp::test::messages::FooInterface::PassEnumParams::Reader>, mp::ReadDestEmplace<mp::test::FooEnum, (lambda at /ci_container_base/src/ipc/libmultiprocess/include/mp/proxy-types.h:273:83)>>'
[10:04:02.738]   244 |     ReadField(std::forward<Args>(args)...);
[10:04:02.738]       |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[10:04:02.738] /ci_container_base/src/ipc/libmultiprocess/include/mp/proxy-types.h:147:12: note: Calling 'CustomReadField<mp::test::FooEnum, mp::StructField<mp::Accessor<mp::foo_fields::Arg, 1>, const mp::test::messages::FooInterface::PassEnumParams::Reader>, mp::ReadDestEmplace<mp::test::FooEnum, (lambda at /ci_container_base/src/ipc/libmultiprocess/include/mp/proxy-types.h:273:83)>>'
[10:04:02.738]   147 |     return CustomReadField(TypeList<RemoveCvRef<LocalTypes>...>(), Priority<2>(), std::forward<Args>(args)...);
[10:04:02.738]       |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[10:04:02.738] /ci_container_base/src/ipc/libmultiprocess/include/mp/type-number.h:55:55: note: Calling 'StructField::get'
[10:04:02.738]    55 |     return read_dest.construct(static_cast<LocalType>(input.get()));
[10:04:02.738]       |                                                       ^~~~~~~~~~~
[10:04:02.738] /ci_container_base/src/ipc/libmultiprocess/include/mp/proxy-types.h:41:99: note: Calling 'Arg::get'
[10:04:02.738]    41 |     template<typename A = Accessor> auto get() const -> decltype(A::get(this->m_struct)) { return A::get(this->m_struct); }
[10:04:02.738]       |                                                                                                   ^~~~~~~~~~~~~~~~~~~~~~
[10:04:02.738] /ci_container_base/ci/scratch/build-x86_64-pc-linux-gnu/src/ipc/libmultiprocess/test/mp/test/foo.capnp.proxy.h:174:82: note: Calling 'Reader::getArg'
[10:04:02.738]   174 |     template<typename S> static auto get(S&& s) -> decltype(s.getArg()) { return s.getArg(); }
[10:04:02.738]       |                                                                                  ^~~~~~~~~~
[10:04:02.738] /ci_container_base/ci/scratch/build-x86_64-pc-linux-gnu/src/ipc/libmultiprocess/test/mp/test/foo.capnp.h:5998:10: note: Calling 'StructReader::getDataField'
[10:04:02.738]  5998 |   return _reader.getDataField< ::int32_t>(
[10:04:02.738]       |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[10:04:02.738]  5999 |       ::capnp::bounded<0>() * ::capnp::ELEMENTS);
[10:04:02.738]       |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[10:04:02.738] /usr/include/capnp/layout.h:1099:7: note: Assuming the condition is false
[10:04:02.738]  1099 |   if ((offset + ONE * ELEMENTS) * capnp::bitsPerElement<T>() <= dataSize) {
[10:04:02.738]       |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[10:04:02.738] /usr/include/capnp/layout.h:1099:3: note: Taking false branch
[10:04:02.738]  1099 |   if ((offset + ONE * ELEMENTS) * capnp::bitsPerElement<T>() <= dataSize) {
[10:04:02.738]       |   ^
[10:04:02.738] /usr/include/capnp/layout.h:1102:5: note: Returning zero
[10:04:02.738]  1102 |     return static_cast<T>(0);
[10:04:02.738]       |     ^~~~~~~~~~~~~~~~~~~~~~~~
[10:04:02.738] /ci_container_base/ci/scratch/build-x86_64-pc-linux-gnu/src/ipc/libmultiprocess/test/mp/test/foo.capnp.h:5998:10: note: Returning from 'StructReader::getDataField'
[10:04:02.738]  5998 |   return _reader.getDataField< ::int32_t>(
[10:04:02.738]       |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[10:04:02.738]  5999 |       ::capnp::bounded<0>() * ::capnp::ELEMENTS);
[10:04:02.738]       |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[10:04:02.738] /ci_container_base/ci/scratch/build-x86_64-pc-linux-gnu/src/ipc/libmultiprocess/test/mp/test/foo.capnp.h:5998:3: note: Returning zero
[10:04:02.738]  5998 |   return _reader.getDataField< ::int32_t>(
[10:04:02.738]       |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[10:04:02.738]  5999 |       ::capnp::bounded<0>() * ::capnp::ELEMENTS);
[10:04:02.738]       |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[10:04:02.738] /ci_container_base/ci/scratch/build-x86_64-pc-linux-gnu/src/ipc/libmultiprocess/test/mp/test/foo.capnp.proxy.h:174:82: note: Returning from 'Reader::getArg'
[10:04:02.738]   174 |     template<typename S> static auto get(S&& s) -> decltype(s.getArg()) { return s.getArg(); }
[10:04:02.738]       |                                                                                  ^~~~~~~~~~
[10:04:02.738] /ci_container_base/ci/scratch/build-x86_64-pc-linux-gnu/src/ipc/libmultiprocess/test/mp/test/foo.capnp.proxy.h:174:75: note: Returning zero
[10:04:02.738]   174 |     template<typename S> static auto get(S&& s) -> decltype(s.getArg()) { return s.getArg(); }
[10:04:02.738]       |                                                                           ^~~~~~~~~~~~~~~~~
[10:04:02.738] /ci_container_base/src/ipc/libmultiprocess/include/mp/proxy-types.h:41:99: note: Returning from 'Arg::get'
[10:04:02.738]    41 |     template<typename A = Accessor> auto get() const -> decltype(A::get(this->m_struct)) { return A::get(this->m_struct); }
[10:04:02.738]       |                                                                                                   ^~~~~~~~~~~~~~~~~~~~~~
[10:04:02.738] /ci_container_base/src/ipc/libmultiprocess/include/mp/proxy-types.h:41:92: note: Returning zero
[10:04:02.738]    41 |     template<typename A = Accessor> auto get() const -> decltype(A::get(this->m_struct)) { return A::get(this->m_struct); }
[10:04:02.738]       |                                                                                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[10:04:02.738] /ci_container_base/src/ipc/libmultiprocess/include/mp/type-number.h:55:55: note: Returning from 'StructField::get'
[10:04:02.738]    55 |     return read_dest.construct(static_cast<LocalType>(input.get()));
[10:04:02.738]       |                                                       ^~~~~~~~~~~
[10:04:02.738] /ci_container_base/src/ipc/libmultiprocess/include/mp/type-number.h:55:32: note: The value '0' provided to the cast expression is not in the valid range of values for 'FooEnum'
[10:04:02.738]    55 |     return read_dest.construct(static_cast<LocalType>(input.get()));
[10:04:02.738]       |                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[10:05:00.005] 2 warnings generated.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions