Merge pull request #23 from jwatkins42/bug/parseRequest
Fixed memory leak and incorrect copy bugs.
This commit is contained in:
@@ -564,26 +564,20 @@ int parseGETD(const char my_message[], char *DREFArray[], int DREFSizes[])
|
|||||||
|
|
||||||
short parseRequest(const char my_message[], float *resultArray[], short arraySizes[])
|
short parseRequest(const char my_message[], float *resultArray[], short arraySizes[])
|
||||||
{
|
{
|
||||||
int i, j;
|
int i;
|
||||||
short count = my_message[5];
|
short count = my_message[5];
|
||||||
short place = 6;
|
short place = 6;
|
||||||
float tmp;
|
|
||||||
float data[25];
|
|
||||||
|
|
||||||
for (i=0; i<count; i++)
|
for (i=0; i<count; i++)
|
||||||
{
|
{
|
||||||
arraySizes[i] = my_message[place];
|
arraySizes[i] = my_message[place];
|
||||||
if (arraySizes[i] > 1) realloc(resultArray[i],arraySizes[i]);
|
if (resultArray[i] != NULL)
|
||||||
|
|
||||||
for (j=0; j< arraySizes[i]; j++)
|
|
||||||
{
|
{
|
||||||
memcpy(&tmp,&my_message[place+1],sizeof(float));
|
free(resultArray[i]);
|
||||||
data[j] = tmp;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
resultArray[i] = malloc(arraySizes[i]*sizeof(float));
|
resultArray[i] = malloc(arraySizes[i]*sizeof(float));
|
||||||
|
|
||||||
memcpy(resultArray[i],&data,arraySizes[i]*sizeof(float));
|
memcpy(resultArray[i],&my_message[place + 1],arraySizes[i]*sizeof(float));
|
||||||
place += 1 + arraySizes[i]*sizeof(float);
|
place += 1 + arraySizes[i]*sizeof(float);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user