diff options
Diffstat (limited to 'src/lib/dlt_client.c')
-rwxr-xr-x | src/lib/dlt_client.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/lib/dlt_client.c b/src/lib/dlt_client.c index 39b5b07..b3962a7 100755 --- a/src/lib/dlt_client.c +++ b/src/lib/dlt_client.c @@ -327,11 +327,15 @@ int dlt_client_send_inject_msg(DltClient *client, char *apid, char *ctid, uint32 /* prepare payload of data */ msg.datasize = sizeof(uint32_t) + sizeof(uint32_t) + size; - if (msg.databuffer) + if (msg.databuffer && (msg.databuffersize < msg.datasize)) { free(msg.databuffer); + msg.databuffer=0; + } + if (msg.databuffer == 0){ + msg.databuffer = (uint8_t *) malloc(msg.datasize); + msg.databuffersize = msg.datasize; } - msg.databuffer = (uint8_t *) malloc(msg.datasize); memcpy(msg.databuffer , &serviceID,sizeof(serviceID)); offset+=sizeof(uint32_t); |