File 0366-erl_interface-Seal-test-case-memory-leaks.patch of Package erlang

From 00a2f00485e88cda594361e271f90e5432edc275 Mon Sep 17 00:00:00 2001
From: Sverker Eriksson <sverker@erlang.org>
Date: Wed, 4 Jul 2018 17:26:20 +0200
Subject: [PATCH 6/7] erl_interface: Seal test case memory leaks

to appease valgrind.
---
 lib/erl_interface/test/ei_accept_SUITE_data/ei_accept_test.c | 11 ++++-------
 .../test/ei_connect_SUITE_data/ei_connect_test.c             | 12 +++++-------
 lib/erl_interface/test/ei_decode_SUITE_data/ei_decode_test.c |  5 +++++
 .../test/ei_decode_encode_SUITE_data/ei_decode_encode_test.c |  1 +
 4 files changed, 15 insertions(+), 14 deletions(-)

diff --git a/lib/erl_interface/test/ei_accept_SUITE_data/ei_accept_test.c b/lib/erl_interface/test/ei_accept_SUITE_data/ei_accept_test.c
index 04bba90732..50df848b69 100644
--- a/lib/erl_interface/test/ei_accept_SUITE_data/ei_accept_test.c
+++ b/lib/erl_interface/test/ei_accept_SUITE_data/ei_accept_test.c
@@ -75,11 +75,7 @@ TESTCASE(interpret)
     ei_term term;
 
     ei_x_new(&x);
-    for (;;) {
-	if (get_bin_term(&x, &term)) {
-	    report(1);
-	    return;
-	} else {
+    while (get_bin_term(&x, &term) == 0) {
 	    char* buf = x.buff, func[MAXATOMLEN];
 	    int index = x.index, arity;
 	    if (term.ei_type != ERL_SMALL_TUPLE_EXT || term.arity != 2)
@@ -100,8 +96,9 @@ TESTCASE(interpret)
 		message("\"%d\" \n", func);
 		fail("bad command");
 	    }
-	}
-    }	
+    }
+    report(1);
+    ei_x_free(&x);
 }
 
 static void cmd_ei_connect_init(char* buf, int len)
diff --git a/lib/erl_interface/test/ei_connect_SUITE_data/ei_connect_test.c b/lib/erl_interface/test/ei_connect_SUITE_data/ei_connect_test.c
index 6a3796dd24..fbd86cdb50 100644
--- a/lib/erl_interface/test/ei_connect_SUITE_data/ei_connect_test.c
+++ b/lib/erl_interface/test/ei_connect_SUITE_data/ei_connect_test.c
@@ -74,11 +74,7 @@ TESTCASE(interpret)
     ei_term term;
 
     ei_x_new(&x);
-    for (;;) {
-	if (get_bin_term(&x, &term)) {
-	    report(1);
-	    return;
-	} else {
+    while (get_bin_term(&x, &term) == 0) {
 	    char* buf = x.buff, func[MAXATOMLEN];
 	    int index = x.index, arity;
 	    if (term.ei_type != ERL_SMALL_TUPLE_EXT || term.arity != 2)
@@ -99,8 +95,10 @@ TESTCASE(interpret)
 		message("\"%d\" \n", func);
 		fail("bad command");
 	    }
-	}
-    }	
+    }
+    report(1);
+    ei_x_free(&x);
+    return;
 }
 
 
diff --git a/lib/erl_interface/test/ei_decode_SUITE_data/ei_decode_test.c b/lib/erl_interface/test/ei_decode_SUITE_data/ei_decode_test.c
index b7a2c4bb8b..5a9be1e9a2 100644
--- a/lib/erl_interface/test/ei_decode_SUITE_data/ei_decode_test.c
+++ b/lib/erl_interface/test/ei_decode_SUITE_data/ei_decode_test.c
@@ -105,6 +105,7 @@ int ei_decode_my_string(const char *buf, int *index, char *to,
         fail1("size of encoded data (%d) is incorrect", size1);    \
       return; \
     } \
+    free_packet(buf); \
   } \
 
 #define EI_DECODE_2_FAIL(FUNC,SIZE,TYPE,VAL) \
@@ -148,6 +149,7 @@ int ei_decode_my_string(const char *buf, int *index, char *to,
       fail("size of encoded data should be 0"); \
       return; \
     } \
+    free_packet(buf); \
   } \
 
 #define dump(arr, num) {	    \
@@ -205,6 +207,7 @@ int ei_decode_my_string(const char *buf, int *index, char *to,
       fail("size of encoded data is incorrect"); \
       return; \
     } \
+    free_packet(buf); \
   } \
 
 #define EI_DECODE_STRING(FUNC,SIZE,VAL) \
@@ -248,6 +251,7 @@ int ei_decode_my_string(const char *buf, int *index, char *to,
       fail("size of encoded data should be 0"); \
       return; \
     } \
+    free_packet(buf); \
   } \
 
 //#define EI_DECODE_UTF8_STRING(FUNC,SIZE,VAL) 
@@ -310,6 +314,7 @@ int ei_decode_my_string(const char *buf, int *index, char *to,
       fail("size of encoded data is incorrect"); \
       return; \
     } \
+    free_packet(buf); \
   } \
 
 /* ******************************************************************** */
diff --git a/lib/erl_interface/test/ei_decode_encode_SUITE_data/ei_decode_encode_test.c b/lib/erl_interface/test/ei_decode_encode_SUITE_data/ei_decode_encode_test.c
index 467f789fdb..6285b5e199 100644
--- a/lib/erl_interface/test/ei_decode_encode_SUITE_data/ei_decode_encode_test.c
+++ b/lib/erl_interface/test/ei_decode_encode_SUITE_data/ei_decode_encode_test.c
@@ -466,6 +466,7 @@ void decode_encode_big(struct Type* t)
     send_buffer(arg.buff, arg.index);
     ei_x_free(&arg);
     ei_free_big(p);
+    free_packet(buf);
 }
 
 
-- 
2.16.4