Skip to content

Commit 8e24400

Browse files
Gonzalo Diazsir-gon
Gonzalo Diaz
authored andcommitted
[Hacker Rank] Warmup: Time Conversion solved ✅. Memory Leak issued solved.
1 parent 55201b6 commit 8e24400

File tree

2 files changed

+15
-7
lines changed

2 files changed

+15
-7
lines changed

src/lib/exercises/src/hackerrank/warmup/time_conversion.c

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,6 @@ char *HACKERRANK_WARMUP_lastN(const char *s, unsigned long n) {
5151
}
5252

5353
char *HACKERRANK_WARMUP_timeConversion(const char *s) {
54-
char *conversion;
5554
char *meridian = HACKERRANK_WARMUP_lastN(s, 2);
5655

5756
char *hour_str = HACKERRANK_WARMUP_firstN(s, 2);
@@ -62,8 +61,12 @@ char *HACKERRANK_WARMUP_timeConversion(const char *s) {
6261
return NULL;
6362
}
6463
strcpy(time_str, s);
65-
time_str = HACKERRANK_WARMUP_lastN(time_str, strlen(time_str) - 2);
66-
time_str = HACKERRANK_WARMUP_firstN(time_str, strlen(time_str) - 2);
64+
char *temp_time_str = HACKERRANK_WARMUP_lastN(time_str, strlen(time_str) - 2);
65+
free(time_str);
66+
time_str = temp_time_str;
67+
temp_time_str = HACKERRANK_WARMUP_firstN(time_str, strlen(time_str) - 2);
68+
free(time_str);
69+
time_str = temp_time_str;
6770

6871
char *endptr;
6972
long hour = strtol(hour_str, &endptr, 10);
@@ -88,7 +91,7 @@ char *HACKERRANK_WARMUP_timeConversion(const char *s) {
8891

8992
const int BUFFER_MAX_SIZE = 9;
9093

91-
conversion = malloc(BUFFER_MAX_SIZE * sizeof(char));
94+
char *conversion = malloc(BUFFER_MAX_SIZE * sizeof(char));
9295

9396
snprintf(conversion, BUFFER_MAX_SIZE, "%02ld%s", hour, time_str);
9497
free(hour_str);

src/tests/unit/lib/hackerrank/warmup/time_conversion.test.cpp

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,14 @@ TEST_CASE("time_conversion JSON Test Cases",
2121
json data = json::parse(f);
2222

2323
for (auto testcase : data) {
24-
std::string result_str(HACKERRANK_WARMUP_timeConversion(
25-
testcase["input"].get<std::string>().c_str()));
26-
CHECK(result_str == testcase["expected"]);
24+
char *result = HACKERRANK_WARMUP_timeConversion(
25+
testcase["input"].get<std::string>().c_str());
26+
27+
std::string result_as_string(result);
28+
29+
free(result);
30+
31+
CHECK(result_as_string == testcase["expected"]);
2732
}
2833
}
2934

0 commit comments

Comments
 (0)