Skip to content

compiler warning about improper use of memcpy to copy c++ objects #120

@rjones30

Description

@rjones30

Hello, here is the output from the compiler. At this point it is still a warning, will become an error at some point down the road, as the compiler strengthens its requirements with regard to memory management. Here is the exact error message, generated in response to #include "rxConnection.h" in JEventProcessor_PStagstudy.cc at line 49.
-Richard Jones

In file included from /group/halld/Software/builds/Linux_Alma9-x86_64-gcc11.5.0-cntr/rcdb/rcdb_0.09.01/cpp/include/RCDB/Condition.h:12,
from rxDataProvider.h:17,
from rxConnection.h:17,
from JEventProcessor_PStagstudy.cc:49:
/group/halld/Software/builds/Linux_Alma9-x86_64-gcc11.5.0-cntr/rcdb/rcdb_0.09.01/cpp/include/rapidjson/document.h: In instantiation of 'void rapidjson::GenericValue<Encoding, Allocator>::SetObjectRaw(rapidjson::GenericValue<Encoding, Allocator>::Member*, rapidjson::SizeType, Allocator&) [with Encoding = rapidjson::UTF8<>; Allocator = rapidjson::MemoryPoolAllocator<>; rapidjson::GenericValue<Encoding, Allocator>::Member = rapidjson::GenericMember<rapidjson::UTF8<>, rapidjson::MemoryPoolAllocator<> >; rapidjson::SizeType = unsigned int]':
/group/halld/Software/builds/Linux_Alma9-x86_64-gcc11.5.0-cntr/rcdb/rcdb_0.09.01/cpp/include/rapidjson/document.h:2415:55: required from 'bool rapidjson::GenericDocument<Encoding, Allocator, StackAllocator>::EndObject(rapidjson::SizeType) [with Encoding = rapidjson::UTF8<>; Allocator = rapidjson::MemoryPoolAllocator<>; StackAllocator = rapidjson::CrtAllocator; rapidjson::SizeType = unsigned int]'
/group/halld/Software/builds/Linux_Alma9-x86_64-gcc11.5.0-cntr/rcdb/rcdb_0.09.01/cpp/include/rapidjson/reader.h:2069:40: required from 'rapidjson::GenericReader<SourceEncoding, TargetEncoding, StackAllocator>::IterativeParsingState rapidjson::GenericReader<SourceEncoding, TargetEncoding, StackAllocator>::Transit(rapidjson::GenericReader<SourceEncoding, TargetEncoding, StackAllocator>::IterativeParsingState, rapidjson::GenericReader<SourceEncoding, TargetEncoding, StackAllocator>::Token, rapidjson::GenericReader<SourceEncoding, TargetEncoding, StackAllocator>::IterativeParsingState, InputStream&, Handler&) [with unsigned int parseFlags = 0; InputStream = rapidjson::GenericStringStream<rapidjson::UTF8<> >; Handler = rapidjson::GenericDocument<rapidjson::UTF8<> >; SourceEncoding = rapidjson::UTF8<>; TargetEncoding = rapidjson::UTF8<>; StackAllocator = rapidjson::CrtAllocator]'
/group/halld/Software/builds/Linux_Alma9-x86_64-gcc11.5.0-cntr/rcdb/rcdb_0.09.01/cpp/include/rapidjson/reader.h:2173:58: required from 'rapidjson::ParseResult rapidjson::GenericReader<SourceEncoding, TargetEncoding, StackAllocator>::IterativeParse(InputStream&, Handler&) [with unsigned int parseFlags = 0; InputStream = rapidjson::GenericStringStream<rapidjson::UTF8<> >; Handler = rapidjson::GenericDocument<rapidjson::UTF8<> >; SourceEncoding = rapidjson::UTF8<>; TargetEncoding = rapidjson::UTF8<>; StackAllocator = rapidjson::CrtAllocator]'
/group/halld/Software/builds/Linux_Alma9-x86_64-gcc11.5.0-cntr/rcdb/rcdb_0.09.01/cpp/include/rapidjson/reader.h:560:46: required from 'rapidjson::ParseResult rapidjson::GenericReader<SourceEncoding, TargetEncoding, StackAllocator>::Parse(InputStream&, Handler&) [with unsigned int parseFlags = 0; InputStream = rapidjson::GenericStringStream<rapidjson::UTF8<> >; Handler = rapidjson::GenericDocument<rapidjson::UTF8<> >; SourceEncoding = rapidjson::UTF8<>; TargetEncoding = rapidjson::UTF8<>; StackAllocator = rapidjson::CrtAllocator]'
/group/halld/Software/builds/Linux_Alma9-x86_64-gcc11.5.0-cntr/rcdb/rcdb_0.09.01/cpp/include/rapidjson/document.h:2211:57: required from 'rapidjson::GenericDocument<Encoding, Allocator, StackAllocator>& rapidjson::GenericDocument<Encoding, Allocator, StackAllocator>::ParseStream(InputStream&) [with unsigned int parseFlags = 0; SourceEncoding = rapidjson::UTF8<>; InputStream = rapidjson::GenericStringStream<rapidjson::UTF8<> >; Encoding = rapidjson::UTF8<>; Allocator = rapidjson::MemoryPoolAllocator<>; StackAllocator = rapidjson::CrtAllocator]'
/group/halld/Software/builds/Linux_Alma9-x86_64-gcc11.5.0-cntr/rcdb/rcdb_0.09.01/cpp/include/rapidjson/document.h:2276:55: required from 'rapidjson::GenericDocument<Encoding, Allocator, StackAllocator>& rapidjson::GenericDocument<Encoding, Allocator, StackAllocator>::Parse(const typename SourceEncoding::Ch*) [with unsigned int parseFlags = 0; SourceEncoding = rapidjson::UTF8<>; Encoding = rapidjson::UTF8<>; Allocator = rapidjson::MemoryPoolAllocator<>; StackAllocator = rapidjson::CrtAllocator; typename SourceEncoding::Ch = char]'
/group/halld/Software/builds/Linux_Alma9-x86_64-gcc11.5.0-cntr/rcdb/rcdb_0.09.01/cpp/include/rapidjson/document.h:2285:43: required from 'rapidjson::GenericDocument<Encoding, Allocator, StackAllocator>& rapidjson::GenericDocument<Encoding, Allocator, StackAllocator>::Parse(const Ch*) [with unsigned int parseFlags = 0; Encoding = rapidjson::UTF8<>; Allocator = rapidjson::MemoryPoolAllocator<>; StackAllocator = rapidjson::CrtAllocator; rapidjson::GenericDocument<Encoding, Allocator, StackAllocator>::Ch = char]'
/group/halld/Software/builds/Linux_Alma9-x86_64-gcc11.5.0-cntr/rcdb/rcdb_0.09.01/cpp/include/rapidjson/document.h:2292:41: required from 'rapidjson::GenericDocument<Encoding, Allocator, StackAllocator>& rapidjson::GenericDocument<Encoding, Allocator, StackAllocator>::Parse(const Ch*) [with Encoding = rapidjson::UTF8<>; Allocator = rapidjson::MemoryPoolAllocator<>; StackAllocator = rapidjson::CrtAllocator; rapidjson::GenericDocument<Encoding, Allocator, StackAllocator>::Ch = char]'
/group/halld/Software/builds/Linux_Alma9-x86_64-gcc11.5.0-cntr/rcdb/rcdb_0.09.01/cpp/include/RCDB/Condition.h:98:31: required from here
/group/halld/Software/builds/Linux_Alma9-x86_64-gcc11.5.0-cntr/rcdb/rcdb_0.09.01/cpp/include/rapidjson/document.h:2004:24: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'rapidjson::GenericValue<rapidjson::UTF8<> >::Member' {aka 'struct rapidjson::GenericMember<rapidjson::UTF8<>, rapidjson::MemoryPoolAllocator<> >'} with no trivial copy-assignment; use copy-assignment instead [-Wclass-memaccess]
2004 | std::memcpy(m, members, count * sizeof(Member));
| ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /group/halld/Software/builds/Linux_Alma9-x86_64-gcc11.5.0-cntr/rcdb/rcdb_0.09.01/cpp/include/RCDB/Condition.h:12,
from rxDataProvider.h:17,
from rxConnection.h:17,
from JEventProcessor_PStagstudy.cc:49:
/group/halld/Software/builds/Linux_Alma9-x86_64-gcc11.5.0-cntr/rcdb/rcdb_0.09.01/cpp/include/rapidjson/document.h:79:8: note: 'rapidjson::GenericValue<rapidjson::UTF8<> >::Member' {aka 'struct rapidjson::GenericMember<rapidjson::UTF8<>, rapidjson::MemoryPoolAllocator<> >'} declared here
79 | struct GenericMember {
| ^~~~~~~~~~~~~

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