cs_open() should return error on invalid mode
diff --git a/cs.c b/cs.c
index 4c1be11..250e105 100644
--- a/cs.c
+++ b/cs.c
@@ -143,7 +143,12 @@
 		// by default, do not break instruction into details
 		ud->detail = CS_OPT_OFF;
 
-		arch_init[ud->arch](ud);
+		cs_err err = arch_init[ud->arch](ud);
+		if (err) {
+			cs_mem_free(ud);
+			*handle = 0;
+			return err;
+		}
 
 		*handle = (uintptr_t)ud;