diff --git a/src/modules/graphics/Buffer.cpp b/src/modules/graphics/Buffer.cpp index b839db8f9..257571d22 100644 --- a/src/modules/graphics/Buffer.cpp +++ b/src/modules/graphics/Buffer.cpp @@ -91,6 +91,8 @@ Buffer::Buffer(Graphics *gfx, const Settings &settings, const std::vector &format, const void *data, size_t size, size_t arraylength) : love::graphics::Buffer(gfx, settings, format, size, arraylength) { + size = getSize(); + arraylength = getArrayLength(); + if (typeFlags & TYPEFLAG_VERTEX) mapType = BUFFERTYPE_VERTEX; else if (typeFlags & TYPEFLAG_INDEX) diff --git a/src/modules/graphics/wrap_Graphics.cpp b/src/modules/graphics/wrap_Graphics.cpp index ff87b05f7..5c2bc44c3 100644 --- a/src/modules/graphics/wrap_Graphics.cpp +++ b/src/modules/graphics/wrap_Graphics.cpp @@ -1523,10 +1523,12 @@ int w_newIndexBuffer(lua_State *L) size_t bytesize = 0; DataFormat format = DATAFORMAT_UINT16; Data *data = nullptr; + const void *initialdata = nullptr; if (luax_istype(L, 1, Data::type)) { data = luax_checktype(L, 1); + initialdata = data->getData(); bytesize = data->getSize(); } @@ -1565,7 +1567,7 @@ int w_newIndexBuffer(lua_State *L) } Buffer *b = nullptr; - luax_catchexcept(L, [&] { b = instance()->newBuffer(settings, format, nullptr, bytesize, arraylength); }); + luax_catchexcept(L, [&] { b = instance()->newBuffer(settings, format, initialdata, bytesize, arraylength); }); if (lua_istable(L, 1)) { @@ -1584,11 +1586,6 @@ int w_newIndexBuffer(lua_State *L) u32data[i] = (uint32) v; } } - else if (data != nullptr) - { - Buffer::Mapper mapper(*b); - memcpy(mapper.data, data->getData(), std::min(data->getSize(), b->getSize())); - } luax_pushtype(L, b); b->release();