Skip to content

Commit c4be8c4

Browse files
authored
Merge pull request douban#103 from mckelvin/fix-memleak
Fix potential memleak(douban#102)
2 parents 5560a82 + bad7b60 commit c4be8c4

File tree

1 file changed

+9
-0
lines changed

1 file changed

+9
-0
lines changed

src/Parser.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -316,6 +316,9 @@ int PacketParser::start_state(err_code_t& err) {
316316
assert(err == RET_OK);
317317
char* ptr = parseTokenData(err_td, n);
318318
log_err("error: [%.*s]", static_cast<int>(n - 1), ptr); // -1 to ignore '\r'
319+
if (err_td.size() > 1) {
320+
delete[] ptr;
321+
}
319322
freeTokenData(err_td);
320323
err = RET_PROGRAMMING_ERR;
321324
m_state = FSM_ERROR;
@@ -369,6 +372,9 @@ int PacketParser::start_state(err_code_t& err) {
369372
assert(err == RET_OK);
370373
char* ptr = parseTokenData(err_td, n);
371374
log_err("server_error: [%.*s]", static_cast<int>(n - 1), ptr); // -1 to ignore '/r'
375+
if (err_td.size() > 1) {
376+
delete[] ptr;
377+
}
372378
freeTokenData(err_td);
373379
err = RET_MC_SERVER_ERR;
374380
m_state = FSM_ERROR;
@@ -420,6 +426,9 @@ int PacketParser::start_state(err_code_t& err) {
420426
assert(err == RET_OK);
421427
char* ptr = parseTokenData(err_td, n);
422428
log_err("client_error: [%.*s]", static_cast<int>(n - 1), ptr); // -1 to ignore '/r'
429+
if (err_td.size() > 1) {
430+
delete[] ptr;
431+
}
423432
freeTokenData(err_td);
424433
err = RET_PROGRAMMING_ERR;
425434
m_state = FSM_ERROR;

0 commit comments

Comments
 (0)