瀏覽代碼

Fix memory leak while completion of pipelined commands

Serj Kalichev 1 年之前
父節點
當前提交
1b90b059c3
共有 1 個文件被更改,包括 7 次插入7 次删除
  1. 7 7
      klish/ksession/ksession_parse.c

+ 7 - 7
klish/ksession/ksession_parse.c

@@ -445,19 +445,19 @@ kpargv_t *ksession_parse_for_completion(ksession_t *session,
 		if (iter == faux_list_tail(split)) { // Last item
 			pargv = ksession_parse_line(session, argv,
 				KPURPOSE_COMPLETION);
-			if (!pargv) {
-				faux_list_free(split);
-				return NULL;
-			}
+			if (!pargv)
+				break;
 		} else { // Non-last item
 			pargv = ksession_parse_line(session, argv,
 				KPURPOSE_EXEC);
 			// All non-last components must be ready for execution
-			if (!pargv || kpargv_status(pargv) != KPARSE_OK) {
+			if (!pargv)
+				break;
+			if (kpargv_status(pargv) != KPARSE_OK) {
 				kpargv_free(pargv);
-				faux_list_free(split);
-				return NULL;
+				break;
 			}
+			kpargv_free(pargv);
 		}
 		iter = faux_list_next_node(iter);
 	}