Fix Thumb disassembler memory corruption with IT sequence (issue #385)
diff --git a/arch/ARM/ARMDisassembler.c b/arch/ARM/ARMDisassembler.c
index cc8f662..b4dbb43 100644
--- a/arch/ARM/ARMDisassembler.c
+++ b/arch/ARM/ARMDisassembler.c
@@ -44,6 +44,10 @@
 
 static bool ITStatus_push_back(ARM_ITStatus *it, char v)
 {
+	if (it->size >= sizeof(it->ITStates)) {
+		// TODO: consider warning user.
+		it->size = 0;
+	}
 	it->ITStates[it->size] = v;
 	it->size++;
 
@@ -730,8 +734,7 @@
 		// Nested IT blocks are UNPREDICTABLE.  Must be checked before we add
 		// the Thumb predicate.
 		if (MCInst_getOpcode(MI) == ARM_t2IT && ITStatus_instrInITBlock(&(ud->ITBlock)))
-			result = MCDisassembler_SoftFail;
-
+			return MCDisassembler_SoftFail;
 		Check(&result, AddThumbPredicate(ud, MI));
 
 		// If we find an IT instruction, we need to parse its condition