@@ -77,10 +77,12 @@ static void stdio_restore_cleanup(void)
77
77
78
78
if (env .subtest_state ) {
79
79
fclose (env .subtest_state -> stdout );
80
+ env .subtest_state -> stdout = NULL ;
80
81
stdout = env .test_state -> stdout ;
81
82
stderr = env .test_state -> stdout ;
82
83
} else {
83
84
fclose (env .test_state -> stdout );
85
+ env .test_state -> stdout = NULL ;
84
86
}
85
87
#endif
86
88
}
@@ -1077,6 +1079,7 @@ static int read_prog_test_msg(int sock_fd, struct msg *msg, enum msg_type type)
1077
1079
static int dispatch_thread_read_log (int sock_fd , char * * log_buf , size_t * log_cnt )
1078
1080
{
1079
1081
FILE * log_fp = NULL ;
1082
+ int result = 0 ;
1080
1083
1081
1084
log_fp = open_memstream (log_buf , log_cnt );
1082
1085
if (!log_fp )
@@ -1085,16 +1088,20 @@ static int dispatch_thread_read_log(int sock_fd, char **log_buf, size_t *log_cnt
1085
1088
while (true) {
1086
1089
struct msg msg ;
1087
1090
1088
- if (read_prog_test_msg (sock_fd , & msg , MSG_TEST_LOG ))
1089
- return 1 ;
1091
+ if (read_prog_test_msg (sock_fd , & msg , MSG_TEST_LOG )) {
1092
+ result = 1 ;
1093
+ goto out ;
1094
+ }
1090
1095
1091
1096
fprintf (log_fp , "%s" , msg .test_log .log_buf );
1092
1097
if (msg .test_log .is_last )
1093
1098
break ;
1094
1099
}
1100
+
1101
+ out :
1095
1102
fclose (log_fp );
1096
1103
log_fp = NULL ;
1097
- return 0 ;
1104
+ return result ;
1098
1105
}
1099
1106
1100
1107
static int dispatch_thread_send_subtests (int sock_fd , struct test_state * state )
@@ -1132,7 +1139,6 @@ static void *dispatch_thread(void *ctx)
1132
1139
{
1133
1140
struct dispatch_data * data = ctx ;
1134
1141
int sock_fd ;
1135
- FILE * log_fp = NULL ;
1136
1142
1137
1143
sock_fd = data -> sock_fd ;
1138
1144
@@ -1214,8 +1220,6 @@ static void *dispatch_thread(void *ctx)
1214
1220
if (env .debug )
1215
1221
fprintf (stderr , "[%d]: Protocol/IO error: %s.\n" , data -> worker_id , strerror (errno ));
1216
1222
1217
- if (log_fp )
1218
- fclose (log_fp );
1219
1223
done :
1220
1224
{
1221
1225
struct msg msg_exit ;
@@ -1685,6 +1689,7 @@ int main(int argc, char **argv)
1685
1689
unload_bpf_testmod ();
1686
1690
1687
1691
free_test_selector (& env .test_selector );
1692
+ free_test_selector (& env .subtest_selector );
1688
1693
free_test_states ();
1689
1694
1690
1695
if (env .succ_cnt + env .fail_cnt + env .skip_cnt == 0 )
0 commit comments