I asked for help on the Fedora devel mailing list and got this, HTH!

On 02/03/2016 05:59 PM, Richard Shaw wrote:

> In member function 'void OpenImageIO::v1_6::pugi::xml_document::create()':
>
/builddir/build/BUILD/oiio-Release-1.6.9/src/include/OpenImageIO/pugixml.cpp:5143:58:
> error: placement new constructing an object of type
> 'OpenImageIO::v1_6::pugi::impl::xml_document_struct' and size '44' in a
> region of type 'char [1]' and size '1' [-Werror=placement-new]
>    _root = new (page->data) impl::xml_document_struct(page);

It's the use of char data[1] as a flexible array member.  I'm not sure
if this is valid C++.  Warning about it is certainly appropriate.

You should remove the data member, use sizeof(xml_memory_page) instead
of offsetof(xml_memory_page, data), and replace page->data with
reinterpret_cast<char *>(page) + sizeof (impl::xml_memory_page), or
ideally, have xml_memory_page::construct() return both pointers.

You probably should check for wraparound in the size computations as
well, to avoid allocating less memory than requested.

--- end ---

Thanks,
Richard
_______________________________________________
Oiio-dev mailing list
[email protected]
http://lists.openimageio.org/listinfo.cgi/oiio-dev-openimageio.org

Reply via email to