Casting to void* make gcc happy since its upset about
object types and rightly so
Fixes
'void* memcpy(void*, const void*, size_t)' copying an object of non-trivial type 'struct msgpack::v2::object' from an array of 'const msgpack_object' {aka 'const struct msgpack_object'} [-Werror=class-memaccess]
Signed-off-by: Khem Raj <raj.khem@gmail.com>
<<< Breaking change >>>
In the functions unpack() and parse(),
Old behavior: If any parse error is happend, offset is NOT updated.
New behavior: If any parse error is happend, offset is updated to the
position the error happened.
It helps MessagePack format error analysis.
If you want to old behavior, copy the original value of offset and then call unpack()
and/or parse().
GCC 7 added a new diagnostic, -Wimplicit-fallthrough, which is enabled
with -Wextra that warns about implicitly falling through a case
statement.
[ 4%] Building C object CMakeFiles/msgpackc-static.dir/src/unpack.c.o
/usr/lib/gcc-snapshot/bin/gcc -I/home/jamessan/src/msgpack-c/. -I/home/jamessan/src/msgpack-c/include -I/home/jamessan/src/msgpack-c/build/include -g -O2 -fdebug-prefix-map=/home/jamessan/src/msgpack-c=. -specs=/usr/share/dpkg/no-pie-compile.specs -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -Wall -Wextra -Werror -g -O3 -o CMakeFiles/msgpackc-static.dir/src/unpack.c.o -c /home/jamessan/src/msgpack-c/src/unpack.c
In file included from /home/jamessan/src/msgpack-c/src/unpack.c:283:0:
/home/jamessan/src/msgpack-c/include/msgpack/unpack_template.h: In function 'template_execute':
/home/jamessan/src/msgpack-c/include/msgpack/unpack_template.h:238:17: error: this statement may fall through [-Werror=implicit-fallthrough=]
++p;
^~~
/home/jamessan/src/msgpack-c/include/msgpack/unpack_template.h:240:13: note: here
default:
^~~~~~~
cc1: all warnings being treated as errors
Adding the comment makes it explicit that the fallthrough is
intentional, so gcc doesn't complain.
Changing the stream to `std::hex` mode should only affect the current character; otherwise printing some msgpack with a list like this: `[123, "string\\u0003", 123]` (123 decimal) ends up printing `[123, "string\\u0003", 7b]`, as `std::hex` is sticky.