Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Provided tests fail to compile #1205

Closed
janisozaur opened this issue Mar 18, 2018 · 11 comments · Fixed by #1323
Closed

Provided tests fail to compile #1205

janisozaur opened this issue Mar 18, 2018 · 11 comments · Fixed by #1323
Labels
Milestone

Comments

@janisozaur
Copy link

At f0177eb some of the provided tests enabled by default fail to compile.

[  1%] Built target doc
[  3%] Built target simplepullreader
[  6%] Built target tutorial
[  9%] Built target jsonx
[ 11%] Built target pretty
[ 14%] Built target condense
[ 16%] Built target simpledom
[ 19%] Built target messagereader
[ 22%] Built target simplewriter
[ 24%] Built target filterkeydom
[ 27%] Built target filterkey
[ 29%] Built target lookaheadparser
[ 32%] Built target capitalize
[ 35%] Built target parsebyparts
[ 37%] Built target prettyauto
[ 40%] Built target schemavalidator
[ 42%] Built target simplereader
[ 45%] Built target serialize
[ 45%] Built target examples
[ 49%] Built target archivertest
[ 51%] Built target namespacetest
[ 54%] Built target gtest
[ 57%] Built target gtest_main
[ 58%] Building CXX object test/unittest/CMakeFiles/unittest.dir/pointertest.cpp.o
In file included from /home/janisozaur/workspace/rapidjson/include/rapidjson/pointer.h:18,
                 from /home/janisozaur/workspace/rapidjson/test/unittest/pointertest.cpp:16:
/home/janisozaur/workspace/rapidjson/include/rapidjson/document.h: In instantiation of ‘rapidjson::GenericValue<Encoding, Allocator>* rapidjson::GenericValue<Encoding, Allocator>::Erase(rapidjson::GenericValue<Encoding, Allocator>::ConstValueIterator, rapidjson::GenericValue<Encoding, Allocator>::ConstValueIterator) [with Encoding = rapidjson::UTF8<>; Allocator = rapidjson::MemoryPoolAllocator<>; rapidjson::GenericValue<Encoding, Allocator>::ValueIterator = rapidjson::GenericValue<rapidjson::UTF8<> >*; rapidjson::GenericValue<Encoding, Allocator>::ConstValueIterator = const rapidjson::GenericValue<rapidjson::UTF8<> >*]’:
/home/janisozaur/workspace/rapidjson/include/rapidjson/document.h:1701:34:   required from ‘rapidjson::GenericValue<Encoding, Allocator>* rapidjson::GenericValue<Encoding, Allocator>::Erase(rapidjson::GenericValue<Encoding, Allocator>::ConstValueIterator) [with Encoding = rapidjson::UTF8<>; Allocator = rapidjson::MemoryPoolAllocator<>; rapidjson::GenericValue<Encoding, Allocator>::ValueIterator = rapidjson::GenericValue<rapidjson::UTF8<> >*; rapidjson::GenericValue<Encoding, Allocator>::ConstValueIterator = const rapidjson::GenericValue<rapidjson::UTF8<> >*]’
/home/janisozaur/workspace/rapidjson/include/rapidjson/pointer.h:749:13:   required from ‘bool rapidjson::GenericPointer<ValueType, Allocator>::Erase(ValueType&) const [with ValueType = rapidjson::GenericValue<rapidjson::UTF8<> >; Allocator = rapidjson::CrtAllocator]’
/home/janisozaur/workspace/rapidjson/test/unittest/pointertest.cpp:891:5:   required from here
/home/janisozaur/workspace/rapidjson/include/rapidjson/document.h:1722:21: error: ‘void* memmove(void*, const void*, size_t)’ writing to an object of type ‘class rapidjson::GenericValue<rapidjson::UTF8<> >’ with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Werror=class-memaccess]
         std::memmove(pos, last, static_cast<size_t>(End() - last) * sizeof(GenericValue));
         ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/janisozaur/workspace/rapidjson/include/rapidjson/document.h:577:7: note: ‘class rapidjson::GenericValue<rapidjson::UTF8<> >’ declared here
 class GenericValue {
       ^~~~~~~~~~~~
/home/janisozaur/workspace/rapidjson/include/rapidjson/document.h: In instantiation of ‘rapidjson::GenericValue<Encoding, Allocator>::MemberIterator rapidjson::GenericValue<Encoding, Allocator>::EraseMember(rapidjson::GenericValue<Encoding, Allocator>::ConstMemberIterator, rapidjson::GenericValue<Encoding, Allocator>::ConstMemberIterator) [with Encoding = rapidjson::UTF8<>; Allocator = rapidjson::MemoryPoolAllocator<>; rapidjson::GenericValue<Encoding, Allocator>::MemberIterator = rapidjson::GenericMemberIterator<false, rapidjson::UTF8<>, rapidjson::MemoryPoolAllocator<> >; rapidjson::GenericValue<Encoding, Allocator>::ConstMemberIterator = rapidjson::GenericMemberIterator<true, rapidjson::UTF8<>, rapidjson::MemoryPoolAllocator<> >]’:
/home/janisozaur/workspace/rapidjson/include/rapidjson/document.h:1495:39:   required from ‘rapidjson::GenericValue<Encoding, Allocator>::MemberIterator rapidjson::GenericValue<Encoding, Allocator>::EraseMember(rapidjson::GenericValue<Encoding, Allocator>::ConstMemberIterator) [with Encoding = rapidjson::UTF8<>; Allocator = rapidjson::MemoryPoolAllocator<>; rapidjson::GenericValue<Encoding, Allocator>::MemberIterator = rapidjson::GenericMemberIterator<false, rapidjson::UTF8<>, rapidjson::MemoryPoolAllocator<> >; rapidjson::GenericValue<Encoding, Allocator>::ConstMemberIterator = rapidjson::GenericMemberIterator<true, rapidjson::UTF8<>, rapidjson::MemoryPoolAllocator<> >]’
/home/janisozaur/workspace/rapidjson/include/rapidjson/document.h:1541:13:   required from ‘bool rapidjson::GenericValue<Encoding, Allocator>::EraseMember(const rapidjson::GenericValue<Encoding, SourceAllocator>&) [with SourceAllocator = rapidjson::MemoryPoolAllocator<>; Encoding = rapidjson::UTF8<>; Allocator = rapidjson::MemoryPoolAllocator<>]’
/home/janisozaur/workspace/rapidjson/include/rapidjson/document.h:1530:29:   required from ‘bool rapidjson::GenericValue<Encoding, Allocator>::EraseMember(const Ch*) [with Encoding = rapidjson::UTF8<>; Allocator = rapidjson::MemoryPoolAllocator<>; rapidjson::GenericValue<Encoding, Allocator>::Ch = char]’
/home/janisozaur/workspace/rapidjson/include/rapidjson/pointer.h:745:81:   required from ‘bool rapidjson::GenericPointer<ValueType, Allocator>::Erase(ValueType&) const [with ValueType = rapidjson::GenericValue<rapidjson::UTF8<> >; Allocator = rapidjson::CrtAllocator]’
/home/janisozaur/workspace/rapidjson/test/unittest/pointertest.cpp:891:5:   required from here
/home/janisozaur/workspace/rapidjson/include/rapidjson/document.h:1518:21: error: ‘void* memmove(void*, const void*, size_t)’ writing to an object of type ‘rapidjson::GenericMemberIterator<false, rapidjson::UTF8<>, rapidjson::MemoryPoolAllocator<> >::ValueType’ {aka ‘struct rapidjson::GenericMember<rapidjson::UTF8<>, rapidjson::MemoryPoolAllocator<> >’} with no trivial copy-assignment; use copy-assignment instead [-Werror=class-memaccess]
         std::memmove(&*pos, &*last, static_cast<size_t>(MemberEnd() - last) * sizeof(Member));
         ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/janisozaur/workspace/rapidjson/include/rapidjson/pointer.h:18,
                 from /home/janisozaur/workspace/rapidjson/test/unittest/pointertest.cpp:16:
/home/janisozaur/workspace/rapidjson/include/rapidjson/document.h:71:8: note: ‘rapidjson::GenericMemberIterator<false, rapidjson::UTF8<>, rapidjson::MemoryPoolAllocator<> >::ValueType’ {aka ‘struct rapidjson::GenericMember<rapidjson::UTF8<>, rapidjson::MemoryPoolAllocator<> >’} declared here
 struct GenericMember {
        ^~~~~~~~~~~~~
cc1plus: all warnings being treated as errors
make[2]: *** [test/unittest/CMakeFiles/unittest.dir/build.make:375: test/unittest/CMakeFiles/unittest.dir/pointertest.cpp.o] Error 1
[ 59%] Building CXX object test/unittest/CMakeFiles/unittest.dir/valuetest.cpp.o
In file included from /home/janisozaur/workspace/rapidjson/test/unittest/valuetest.cpp:16:
/home/janisozaur/workspace/rapidjson/include/rapidjson/document.h: In instantiation of ‘rapidjson::GenericValue<Encoding, Allocator>* rapidjson::GenericValue<Encoding, Allocator>::Erase(rapidjson::GenericValue<Encoding, Allocator>::ConstValueIterator, rapidjson::GenericValue<Encoding, Allocator>::ConstValueIterator) [with Encoding = rapidjson::UTF8<>; Allocator = rapidjson::MemoryPoolAllocator<>; rapidjson::GenericValue<Encoding, Allocator>::ValueIterator = rapidjson::GenericValue<rapidjson::UTF8<> >*; rapidjson::GenericValue<Encoding, Allocator>::ConstValueIterator = const rapidjson::GenericValue<rapidjson::UTF8<> >*]’:
/home/janisozaur/workspace/rapidjson/test/unittest/valuetest.cpp:1112:59:   required from here
/home/janisozaur/workspace/rapidjson/include/rapidjson/document.h:1722:21: error: ‘void* memmove(void*, const void*, size_t)’ writing to an object of type ‘class rapidjson::GenericValue<rapidjson::UTF8<> >’ with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Werror=class-memaccess]
         std::memmove(pos, last, static_cast<size_t>(End() - last) * sizeof(GenericValue));
         ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/janisozaur/workspace/rapidjson/include/rapidjson/document.h:577:7: note: ‘class rapidjson::GenericValue<rapidjson::UTF8<> >’ declared here
 class GenericValue {
       ^~~~~~~~~~~~
/home/janisozaur/workspace/rapidjson/include/rapidjson/document.h: In instantiation of ‘rapidjson::GenericValue<Encoding, Allocator>::MemberIterator rapidjson::GenericValue<Encoding, Allocator>::EraseMember(rapidjson::GenericValue<Encoding, Allocator>::ConstMemberIterator, rapidjson::GenericValue<Encoding, Allocator>::ConstMemberIterator) [with Encoding = rapidjson::UTF8<>; Allocator = rapidjson::MemoryPoolAllocator<>; rapidjson::GenericValue<Encoding, Allocator>::MemberIterator = rapidjson::GenericMemberIterator<false, rapidjson::UTF8<>, rapidjson::MemoryPoolAllocator<> >; rapidjson::GenericValue<Encoding, Allocator>::ConstMemberIterator = rapidjson::GenericMemberIterator<true, rapidjson::UTF8<>, rapidjson::MemoryPoolAllocator<> >]’:
/home/janisozaur/workspace/rapidjson/test/unittest/valuetest.cpp:1462:17:   required from ‘void TestObject(T&, Allocator&) [with T = rapidjson::GenericValue<rapidjson::UTF8<> >; Allocator = rapidjson::MemoryPoolAllocator<>]’
/home/janisozaur/workspace/rapidjson/test/unittest/valuetest.cpp:1497:28:   required from here
/home/janisozaur/workspace/rapidjson/include/rapidjson/document.h:1518:21: error: ‘void* memmove(void*, const void*, size_t)’ writing to an object of type ‘rapidjson::GenericMemberIterator<false, rapidjson::UTF8<>, rapidjson::MemoryPoolAllocator<> >::ValueType’ {aka ‘struct rapidjson::GenericMember<rapidjson::UTF8<>, rapidjson::MemoryPoolAllocator<> >’} with no trivial copy-assignment; use copy-assignment instead [-Werror=class-memaccess]
         std::memmove(&*pos, &*last, static_cast<size_t>(MemberEnd() - last) * sizeof(Member));
         ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/janisozaur/workspace/rapidjson/test/unittest/valuetest.cpp:16:
/home/janisozaur/workspace/rapidjson/include/rapidjson/document.h:71:8: note: ‘rapidjson::GenericMemberIterator<false, rapidjson::UTF8<>, rapidjson::MemoryPoolAllocator<> >::ValueType’ {aka ‘struct rapidjson::GenericMember<rapidjson::UTF8<>, rapidjson::MemoryPoolAllocator<> >’} declared here
 struct GenericMember {
        ^~~~~~~~~~~~~
cc1plus: all warnings being treated as errors
make[2]: *** [test/unittest/CMakeFiles/unittest.dir/build.make:639: test/unittest/CMakeFiles/unittest.dir/valuetest.cpp.o] Error 1
make[2]: Target 'test/unittest/CMakeFiles/unittest.dir/build' not remade because of errors.
make[1]: *** [CMakeFiles/Makefile2:2060: test/unittest/CMakeFiles/unittest.dir/all] Error 2
[ 61%] Building CXX object test/perftest/CMakeFiles/perftest.dir/schematest.cpp.o
/home/janisozaur/workspace/rapidjson/test/perftest/schematest.cpp: In member function ‘virtual void Schema::SetUp()’:
/home/janisozaur/workspace/rapidjson/test/perftest/schematest.cpp:26:25: error: ‘%s’ directive writing up to 4095 bytes into a region of size 1024 [-Werror=format-overflow=]
         sprintf(buffer, "%s%s", paths[i], filename);
                         ^~~~~~
/home/janisozaur/workspace/rapidjson/test/perftest/schematest.cpp:89:35:
             char* json = ReadFile(filename, jsonAllocator);
                                   ~~~~~~~~
/home/janisozaur/workspace/rapidjson/test/perftest/schematest.cpp:26:16: note: ‘sprintf’ output 1 or more bytes (assuming 4096) into a destination of size 1024
         sprintf(buffer, "%s%s", paths[i], filename);
         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cc1plus: all warnings being treated as errors
make[2]: *** [test/perftest/CMakeFiles/perftest.dir/build.make:159: test/perftest/CMakeFiles/perftest.dir/schematest.cpp.o] Error 1
make[2]: Target 'test/perftest/CMakeFiles/perftest.dir/build' not remade because of errors.
make[1]: *** [CMakeFiles/Makefile2:2001: test/perftest/CMakeFiles/perftest.dir/all] Error 2
make[1]: Target 'all' not remade because of errors.
make: *** [Makefile:141: all] Error 2
make: Target 'default_target' not remade because of errors.
@miloyip miloyip added the build label Mar 20, 2018
@miloyip
Copy link
Collaborator

miloyip commented Mar 26, 2018

It seems due to some new warnings from some new compilers.
Please provide the compiler information.

@janisozaur
Copy link
Author

Current GCC 8, x86-64.

@janisozaur
Copy link
Author

Ping

@janisozaur
Copy link
Author

Any chance of getting this fixed?

@janisozaur
Copy link
Author

This is still present in a091035, are you guys looking into that?

@miloyip
Copy link
Collaborator

miloyip commented May 8, 2018

I haven't setup the environment for this. Can you make a PR?

@janisozaur
Copy link
Author

#1244 there you go

janisozaur added a commit to OpenRCT2/OpenRCT2 that referenced this issue May 10, 2018
janisozaur added a commit to OpenRCT2/OpenRCT2 that referenced this issue May 11, 2018
@janisozaur
Copy link
Author

… another 3 weeks passed. @miloyip when are you going to fix this?

@marehr
Copy link

marehr commented Jun 6, 2018

Is this a duplicate of #1086?

@janisozaur
Copy link
Author

Partially it is. This issue mentions some more warnings than #1086, as found with GCC8.

@miloyip miloyip added this to the v1.2 Beta milestone Jun 21, 2018
pah added a commit to pah/rapidjson-upstream that referenced this issue Jul 15, 2018
Recent GCC versions warn about using memcpy/memmove to
write to a class pointer (-Wclass-memaccess).

Avoid the warnings by casting to void* first.

Closes Tencent#1086.
Closes Tencent#1205.
Closes Tencent#1246.
smanders pushed a commit to externpro/rapidjson that referenced this issue Jan 9, 2023
Recent GCC versions warn about using memcpy/memmove to
write to a class pointer (-Wclass-memaccess).

Avoid the warnings by casting to void* first.

Closes Tencent#1086.
Closes Tencent#1205.
Closes Tencent#1246.
@RaoGuangxiang
Copy link

fixed: git clone the latest, inteading of downloading in the release url.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
4 participants