浏览代码

Merge pull request #788 from phil-lavin/mem-leaks

Fix memory leaks in presence and purple
Daniel-Constantin Mierla 9 年之前
父节点
当前提交
9c1b55e906
共有 2 个文件被更改,包括 13 次插入4 次删除
  1. 4 2
      modules/presence/presentity.c
  2. 9 2
      modules/purple/mapping.c

+ 4 - 2
modules/presence/presentity.c

@@ -396,9 +396,11 @@ int delete_presentity_if_dialog_id_exists(presentity_t* presentity, char* dialog
 	if(result == NULL)
 		return -3;
 
-	// No results from query definitely means no dialog exists
-	if (result->n <= 0)
+	/* no results from query definitely means no dialog exists */
+	if (result->n <= 0) {
+		pa_dbf.free_result(pa_db, result);
 		return 0;
+	}
 
 	// Loop the rows returned from the DB
 	for (i=0; i < result->n; i++)

+ 9 - 2
modules/purple/mapping.c

@@ -133,8 +133,11 @@ char *find_sip_user(char *extern_user) {
 	
 	if (result == NULL)
 		return NULL;
-	if (result->n <= 0)
+
+	if (result->n <= 0) {
+		pa_dbf.free_result(pa_db, result);
 		return NULL;
+	}
 
 	row = &result->rows[0];
 	row_vals = ROW_VALUES(row);
@@ -208,6 +211,7 @@ extern_account_t *find_accounts(char* sip_user, int* count) {
 		return NULL;
 	}
 	if (result->n <= 0) {
+		pa_dbf.free_result(pa_db, result);
 		LM_ERR("result count = %d\n", result->n);
 		return NULL;
 	}
@@ -290,8 +294,11 @@ extern_user_t *find_users(char *sip_user, int* count) {
 
 	if (result == NULL)
 		return NULL;
-	if (result->n <= 0)
+
+	if (result->n <= 0) {
+		pa_dbf.free_result(pa_db, result);
 		return NULL;
+	}
 
 	users = (extern_user_t*) pkg_malloc(sizeof(extern_user_t)*result->n);