diff --git a/llvm/keystone/ks.cpp b/llvm/keystone/ks.cpp
index 11ea641a1529913e7a3dd2083a3d7fe606f7457e..726ec738e49dca38731bc4dc0638d7a32ad98b6d 100644
--- a/llvm/keystone/ks.cpp
+++ b/llvm/keystone/ks.cpp
@@ -223,6 +223,7 @@ ks_err ks_open(ks_arch arch, int mode, ks_engine **result)
 
     if (arch < KS_ARCH_MAX) {
         ks = new (std::nothrow) ks_struct();
+        memset(ks, 0, sizeof(*ks));
         if (!ks) {
             // memory insufficient
             return KS_ERR_NOMEM;
@@ -446,6 +447,7 @@ ks_err ks_close(ks_engine *ks)
 #endif
 
     // finally, free ks itself.
+    memset(ks, 0, sizeof(*ks));
     delete ks;
 
     return KS_ERR_OK;