[merged]
1.MT2735_MP1_MR1.0 merged,without MR1.0-dpramk
Change-Id: I652723435ec940ee8c0b9bc6ff2d6e80557a0429
diff --git a/framework/lynq-ril-service/src/common.cpp b/framework/lynq-ril-service/src/common.cpp
index e385e1c..37e5c41 100755
--- a/framework/lynq-ril-service/src/common.cpp
+++ b/framework/lynq-ril-service/src/common.cpp
@@ -1,4 +1,5 @@
- /*
+// SPDX-License-Identifier: MediaTekProprietary
+/*
* Copyright (C) 2006 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -36,6 +37,7 @@
#include "utils.h"
#include "data.h"
#include "cc.h"
+
static pthread_mutex_t s_DataMutex = PTHREAD_MUTEX_INITIALIZER;
static pthread_cond_t s_DataCond = PTHREAD_COND_INITIALIZER;
@@ -783,21 +785,29 @@
writeStringToParcel(p, items[1].c_str());
} else if(items[0] == std::string("REQ")) {
int request = std::stoi(items[1]);
+
+ // For loop, free before reassign to avoid memory leak
+ if (pRI != NULL) {
+ free(pRI);
+ }
pRI = creatRILInfoAndInit(request, UDP, (RIL_SOCKET_ID) ((0)));
}
} else {
RLOGD("%s, too many \"=\"");
}
}
+
if(pRI && pRI->pCI) {
p.setDataPosition(pos);
pRI->pCI->dispatchFunction(p, pRI);
- } else {
- if(pRI) {
- free(pRI);
- pRI = NULL;
- }
}
+
+ // Free to avoid memory leak
+ if(pRI != NULL) {
+ free(pRI);
+ pRI = NULL;
+ }
+
return true;
}
int lynqSocketSendto(int fd,struct sockaddr *dest_addr,int addr_len,char msg[])