Skip to content

Commit e565be9

Browse files
author
Food Tiny
authored
Merge pull request #69 from foodtiny/task/fix-memory-leak
Use valgrind to verify unit test and check memory every commit
2 parents b27592d + f3a134c commit e565be9

7 files changed

Lines changed: 48 additions & 47 deletions

File tree

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# git rm --cached `git ls-files -i --exclude-from=.gitignore`
22
.DS_Store
33
bin
4+
a.out
45
/.idea
56
/CMakeFiles
67
/cmake-build-debug
@@ -23,4 +24,4 @@ bin
2324
/test.txt
2425
/logging
2526
/json
26-
/native.iml
27+
/native.iml

.travis.yml

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,8 @@ before_script:
1414
- cmake . -DCMAKE_BUILD_TYPE=debug -DCMAKE_VERBOSE_MAKEFILE=true
1515
script:
1616
- make native_test -j8
17-
- make unit-test
17+
- ./misc/memory_check
1818
after_script:
1919
- sudo pkill python
20-
after_success:
21-
- ./misc/memory_check
2220
notifications:
2321
slack: foodtiny:hzkLBCLrqjtgi9ctqwdQ034S

java/lang/Object/Object.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ class Array {
106106
string result = strdup("");
107107
if (std::is_same<E, byte>::value || std::is_same<E, char>::value) {
108108
for (char element : *this) {
109-
char *result_holder = result;
109+
string result_holder = result;
110110
result = string_append(&result, element);
111111
free(result_holder);
112112
}

java/lang/String/String.cpp

Lines changed: 39 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ String::String() {
3636

3737
String::String(const_string target) {
3838
this->original = strdup(target);
39-
this->size = length_pointer_char((char *) target);
39+
this->size = length_pointer_char((string) target);
4040
}
4141

4242
String::String(string target) {
@@ -74,9 +74,9 @@ String::~String() {
7474
* @return String
7575
*/
7676
String String::clone() {
77-
string holdPointer = strdup(this->original);
78-
String result = holdPointer;
79-
free(holdPointer);
77+
string pointerHolder = strdup(this->original);
78+
String result = pointerHolder;
79+
free(pointerHolder);
8080
return result;
8181
}
8282

@@ -125,7 +125,7 @@ int String::compareToIgnoreCase(String str) const {
125125
* @return String
126126
*/
127127
String String::concat(String str) {
128-
char *stringConcat = string_concat(this->original, str.original);
128+
string stringConcat = string_concat(this->original, str.original);
129129
String result(stringConcat);
130130
free(stringConcat);
131131
return result;
@@ -193,9 +193,9 @@ String String::fromCharArray(Array<char> &chars) {
193193
* @return int
194194
*/
195195
int String::indexOf(int ch) const {
196-
string holdPointer = string_from_char((char) ch);
197-
int result = string_index(this->original, holdPointer, 1);
198-
free(holdPointer);
196+
string pointerHolder = string_from_char((char) ch);
197+
int result = string_index(this->original, pointerHolder, 1);
198+
free(pointerHolder);
199199
return result;
200200
}
201201

@@ -377,9 +377,9 @@ boolean String::matches(String regex) const {
377377
String String::replace(char oldChar, char newChar) const {
378378
string oldString = string_from_char(oldChar);
379379
string newString = string_from_char(newChar);
380-
string holdPointer = string_replace(this->original, oldString, newString);
381-
String result = holdPointer;
382-
free(holdPointer);
380+
string pointerHolder = string_replace(this->original, oldString, newString);
381+
String result = pointerHolder;
382+
free(pointerHolder);
383383
free(oldString);
384384
free(newString);
385385
return result;
@@ -404,7 +404,7 @@ String String::replaceAll(String regex, String replacement) const {
404404
* @return Array<String>
405405
*/
406406
Array<String> String::split(String regex) const {
407-
char **splitStrings = string_split(this->original, regex.toString());
407+
string *splitStrings = string_split(this->original, regex.toString());
408408
Array<String> strings;
409409

410410
#ifdef __linux__
@@ -548,9 +548,9 @@ String String::valueOf(boolean target) {
548548
* @return String
549549
*/
550550
String String::valueOf(char target) {
551-
string holdPointer = string_from_char(target);
552-
String result = holdPointer;
553-
free(holdPointer);
551+
string pointerHolder = string_from_char(target);
552+
String result = pointerHolder;
553+
free(pointerHolder);
554554
return result;
555555
}
556556

@@ -574,9 +574,9 @@ String String::valueOf(string target) {
574574
* @return String
575575
*/
576576
String String::valueOf(short target) {
577-
string holdPointer = string_from_short(target);
578-
String result = holdPointer;
579-
free(holdPointer);
577+
string pointerHolder = string_from_short(target);
578+
String result = pointerHolder;
579+
free(pointerHolder);
580580
return result;
581581
}
582582

@@ -587,9 +587,9 @@ String String::valueOf(short target) {
587587
* @return String
588588
*/
589589
String String::valueOf(int target) {
590-
string holdPointer = string_from_int(target);
591-
String result = holdPointer;
592-
free(holdPointer);
590+
string pointerHolder = string_from_int(target);
591+
String result = pointerHolder;
592+
free(pointerHolder);
593593
return result;
594594
}
595595

@@ -600,9 +600,9 @@ String String::valueOf(int target) {
600600
* @return String
601601
*/
602602
String String::valueOf(long target) {
603-
string holdPointer = string_from_long(target);
604-
String result = holdPointer;
605-
free(holdPointer);
603+
string pointerHolder = string_from_long(target);
604+
String result = pointerHolder;
605+
free(pointerHolder);
606606
return result;
607607
}
608608

@@ -613,9 +613,9 @@ String String::valueOf(long target) {
613613
* @return String
614614
*/
615615
String String::valueOf(float target) {
616-
string holdPointer = string_from_float(target);
617-
String result = holdPointer;
618-
free(holdPointer);
616+
string pointerHolder = string_from_float(target);
617+
String result = pointerHolder;
618+
free(pointerHolder);
619619
return result;
620620
}
621621

@@ -626,9 +626,9 @@ String String::valueOf(float target) {
626626
* @return String
627627
*/
628628
String String::valueOf(double target) {
629-
string holdPointer = string_from_double(target);
630-
String result = holdPointer;
631-
free(holdPointer);
629+
string pointerHolder = string_from_double(target);
630+
String result = pointerHolder;
631+
free(pointerHolder);
632632
return result;
633633
}
634634

@@ -639,9 +639,9 @@ String String::valueOf(double target) {
639639
* @return String
640640
*/
641641
String String::operator+(const string &target) {
642-
string holdPointer = string_concat(this->original, target);
643-
String result = holdPointer;
644-
free(holdPointer);
642+
string pointerHolder = string_concat(this->original, target);
643+
String result = pointerHolder;
644+
free(pointerHolder);
645645
return result;
646646
}
647647

@@ -652,9 +652,9 @@ String String::operator+(const string &target) {
652652
* @return String
653653
*/
654654
String String::operator+(const String &target) {
655-
string holdPointer = string_concat(this->original, target.original);
656-
String result = holdPointer;
657-
free(holdPointer);
655+
string pointerHolder = string_concat(this->original, target.original);
656+
String result = pointerHolder;
657+
free(pointerHolder);
658658
return result;
659659
}
660660

@@ -664,16 +664,16 @@ String String::operator+(const String &target) {
664664
* @param target2
665665
*/
666666
String String::operator+=(const String &target) {
667-
char *result = string_concat(this->original, target.original);
667+
string result = string_concat(this->original, target.original);
668668
*this = result;
669669
free(result);
670670
return *this;
671671
}
672672

673673
String String::operator+=(const char &target) {
674-
void* holdPointer = this->original;
674+
string pointerHolder = this->original;
675675
string_append(&this->original, target);
676-
free(holdPointer);
676+
free(pointerHolder);
677677
return *this;
678678
}
679679

java/lang/System/System.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
using namespace Java::Lang;
3030

3131
void System::out::print(String target) {
32-
char *targetCharacters = target.toString();
32+
string targetCharacters = target.toString();
3333
if (is_empty(targetCharacters)) {
3434
return;
3535
}
@@ -38,7 +38,7 @@ void System::out::print(String target) {
3838
}
3939

4040
void System::out::println(String target) {
41-
char *targetCharacters = target.toString();
41+
string targetCharacters = target.toString();
4242
if (is_empty(targetCharacters)) {
4343
return;
4444
}

java/net/URLDecoder/URLDecoderTest.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,6 @@ using namespace Java::Lang;
3636
TEST(JavaNet, URLDecodeString) {
3737
// String target = "Qu%c3%a1n+%c4%83n";
3838
// String result = URLDecoder::decode(target);
39-
// char *expect = "Quán ăn";
39+
// string expect = "Quán ăn";
4040
// ASSERT_STR(expect, result.toString());
4141
}

misc/memory_check

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,6 @@ env | sort
1414
if [ "$TRAVIS_OS_NAME" != "osx" ]
1515
then
1616
valgrind --error-exitcode=42 --leak-check=full ./native_test
17+
else
18+
./native_test
1719
fi

0 commit comments

Comments
 (0)