From a1a8e694b1f9d043767c9b945cb49ef160122a7e Mon Sep 17 00:00:00 2001
From: Frank Li <Frank.Li@nxp.com>
Date: Fri, 25 Jan 2019 13:22:30 -0600
Subject: [PATCH] fixed crash when DONE cmd is not last one

Signed-off-by: Frank Li <Frank.Li@nxp.com>
---
 libuuu/cmd.cpp | 3 +++
 libuuu/cmd.h   | 5 +++--
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/libuuu/cmd.cpp b/libuuu/cmd.cpp
index c2eeb4e7..ace3f1d6 100644
--- a/libuuu/cmd.cpp
+++ b/libuuu/cmd.cpp
@@ -166,6 +166,9 @@ int CmdList::run_all(CmdCtx *p, bool dry_run)
 			call_notify(nt);
 			if (ret)
 				return ret;
+
+			if ((*it)->m_lastcmd)
+				break;
 		}
 	}
 	return ret;
diff --git a/libuuu/cmd.h b/libuuu/cmd.h
index 6a4796d4..ae4a5188 100644
--- a/libuuu/cmd.h
+++ b/libuuu/cmd.h
@@ -90,8 +90,9 @@ class CmdBase
 public:
 	vector<Param> m_param;
 	uint64_t m_timeout;
+	bool m_lastcmd;
 	std::string m_cmd;
-	CmdBase() { m_timeout = 2000; };
+	CmdBase() { m_timeout = 2000; m_lastcmd = false; };
 	CmdBase(char *p) { m_timeout = 2000;  if (p) m_cmd = p; }
 	void insert_param_info(const char *key, void *pD, Param::Param_Type tp, bool ignore_case = true)
 	{
@@ -148,7 +149,7 @@ class CmdObjCreateMap:public map<string, CreateCmdObj>
 class CmdDone :public CmdBase
 {
 public:
-	CmdDone(char *p) :CmdBase(p) {};
+	CmdDone(char *p) :CmdBase(p) { m_lastcmd = true; };
 	int run(CmdCtx *p);
 };