summary |
shortlog |
log |
commit | commitdiff |
review |
tree
raw |
patch |
inline | side by side (from parent 1:
9a8aea1)
Changes for compiling with gcc 11.x:
- g++ now seems to instantiate duplicate entries for the set member
function in the contextclass template class in binding-wrap.hpp.
The use of a closure as a default argument value seems to be the
culprit, as it seems there are longstanding issues with respect to
using closures like that and resulting symbol names (i.e. the use
of a closure isn't necessarily recognized as generating unique
instantiations). In theory, C++17 should explicitly allow this
when the closure has no captures, but bumping up to -std=gnu++17
did not fix the issue. To avoid it, replace the closure usage
with a private static member function.
- In afb-hook.c, tweaked the ignoring of the writev return code to
make the stricter checking in gcc 11 happy.
- In decode_base64 in wrap-json.c, initialize u16 as gcc now seems
to miss that it will be initialized on the first loop iteration.
Bug-AGL: SPEC-3819
Signed-off-by: Scott Murray <scott.murray@konsulko.com>
Change-Id: I8876db196b46cc35ecd2798e20d5ec3425df865e
friend class req;
afb_req_t req_;
contextclass(afb_req_t r) : req_(r) {}
friend class req;
afb_req_t req_;
contextclass(afb_req_t r) : req_(r) {}
+ static void default_destroyer(T*t) { delete t; }
public:
inline operator T *() const { return get(); }
public:
inline operator T *() const { return get(); }
- inline void set(T *value, void (*destroyer)(T*) = [](T*t){delete t;}) const {
+ inline void set(T *value, void (*destroyer)(T*) = default_destroyer) const {
afb_req_context(req_, 1,
nullptr,
reinterpret_cast<void(*)(void*)>(destroyer),
afb_req_context(req_, 1,
nullptr,
reinterpret_cast<void(*)(void*)>(destroyer),
iov[4].iov_base = (void*)&chars[9];
iov[4].iov_len = 1;
iov[4].iov_base = (void*)&chars[9];
iov[4].iov_len = 1;
- (void)writev(2, iov, 5);
+ (void)!writev(2, iov, 5);
size_t *decodedlen,
int url)
{
size_t *decodedlen,
int url)
{
uint8_t u8, *result;
size_t in, out, iin;
char c;
uint8_t u8, *result;
size_t in, out, iin;
char c;