Skip to content

Commit c78b3eb

Browse files
committed
fix(graphics): support dataSize only in BufferDataCommandBufferRequest
1 parent 6f1b41d commit c78b3eb

File tree

1 file changed

+15
-17
lines changed

1 file changed

+15
-17
lines changed

src/common/command_buffers/details/buffer.hpp

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -159,29 +159,24 @@ namespace commandbuffers
159159
, dataSize(srcSize)
160160
, usage(usage)
161161
{
162-
if (srcData == nullptr)
162+
if (srcSize > 0 && srcData != nullptr)
163163
{
164-
dataSize = 0;
165-
}
166-
else if (srcSize > 0)
167-
{
168-
data = malloc(srcSize);
169-
if (data != nullptr)
170-
memcpy(data, srcData, srcSize);
164+
this->data = malloc(srcSize);
165+
if (this->data != nullptr)
166+
memcpy(this->data, srcData, srcSize);
171167
}
172168
}
173169
BufferDataCommandBufferRequest(const BufferDataCommandBufferRequest &that, bool clone = false)
174170
: TrCommandBufferSimpleRequest(that, clone)
175171
, target(that.target)
176-
, dataSize(0)
172+
, dataSize(that.dataSize)
177173
, data(nullptr)
178174
, usage(that.usage)
179175
{
180176
if (clone == true && that.data != nullptr)
181177
{
182-
dataSize = that.dataSize;
183-
data = malloc(dataSize);
184-
memcpy(data, that.data, dataSize);
178+
this->data = malloc(dataSize);
179+
memcpy(this->data, that.data, dataSize);
185180
}
186181
}
187182
~BufferDataCommandBufferRequest()
@@ -197,16 +192,19 @@ namespace commandbuffers
197192
TrCommandBufferMessage *serialize() override
198193
{
199194
auto message = new TrCommandBufferMessage(type, size, this);
200-
message->addRawSegment(dataSize, data);
195+
if (dataSize > 0 && data != nullptr)
196+
message->addRawSegment(dataSize, data);
201197
return message;
202198
}
203199
void deserialize(TrCommandBufferMessage &message) override
204200
{
205201
auto dataSegment = message.getSegment(0);
206-
auto dataSize = dataSegment->getSize();
207-
this->dataSize = dataSize;
208-
this->data = malloc(dataSize);
209-
memcpy(this->data, dataSegment->getData(), dataSize);
202+
if (dataSegment != nullptr)
203+
{
204+
this->dataSize = dataSegment->getSize();
205+
this->data = malloc(this->dataSize);
206+
memcpy(this->data, dataSegment->getData(), this->dataSize);
207+
}
210208
}
211209
std::string toString(const char *line_prefix) const override
212210
{

0 commit comments

Comments
 (0)