MLK: Clean 5 stack unittest valgrind leak reports 29/22729/20
authorMats Wichmann <mats@linux.com>
Sat, 7 Oct 2017 14:47:32 +0000 (08:47 -0600)
committerMats Wichmann <mats@linux.com>
Sat, 24 Feb 2018 00:40:07 +0000 (00:40 +0000)
commit17f67a73acee424c6060092ed1533446229c53a4
treea3f1ff6320f1ebca9f9673b54ad5fbc1539a3050
parent7b1878a196dd752444517d7aa71c8a0d0b09447a
MLK: Clean 5 stack unittest valgrind leak reports

These are in the test code only.

1/2. The test TEST(LinksPayloadArray, BuildCollectionLinksPayloadArray)
has multiple allocations that are not freed.

  736 bytes in 1 blocks are definitely lost in loss record 962 of 988
  alloc ~3019:  CAGetNetworkInformation(&info, &size);
  added OICFree(info); at function end

  184 bytes in 1 blocks are definitely lost in loss record 922 of 988
  allocated ~3015: OCDevAddr* devAddr = (OCDevAddr*)OICCalloc(1, sizeof(OCDevAddr));
  added OICFree(devAddr); at function end

3. Still in TEST(LinksPayloadArray, BuildCollectionLinksPayloadArray),
  134 bytes in 4 blocks are definitely lost in loss record 901 of 988
  alloc ~3125:   ASSERT_TRUE(OCRepPayloadGetPropString(epsMap[k], OC_RSRVD_ENDPOINT, &outUri));
  outUri is allocated, tested, not freed.

  Added an OICFree at the end of the loop

4/5. two calls to OCRepPayloadGetPropObject happen in a pair of loops;
freeing is outside the loops which means that iterations other than
the last have their allocation lost, not freed.

  252 (48 direct, 204 indirect) bytes in 1 blocks are definitely lost in loss record 929 of 988
  115 (48 direct, 67 indirect) bytes in 1 blocks are definitely lost in loss record 892 of 988

Note for reviewers: some other leak reports for this
unittest were traced to flaws in the stack code, and
were split off into separate commits as a result, since
"approve change to stack" might be quite different than
"approve change to unittest".  See:
https://gerrit.iotivity.org/gerrit/23847
https://gerrit.iotivity.org/gerrit/23849

With the items in this change and the two referenced change,
the 12 "definitely lost" leak reports for the stack
unittest are reduced to two.

Change-Id: I6f1c74eedc6e9be40173bde8c1f321e84dbc83f0
Signed-off-by: Mats Wichmann <mats@linux.com>
resource/csdk/stack/test/stacktests.cpp