diff --git a/llvm/keystone/ks.cpp b/llvm/keystone/ks.cpp
index 5fd919ce72d5143d5b1256588f7d546bc09b4f38..f69d4451bedd73b596f288fb71673ea94ec303f4 100644
--- a/llvm/keystone/ks.cpp
+++ b/llvm/keystone/ks.cpp
@@ -174,6 +174,7 @@ ks_err ks_open(ks_arch arch, ks_mode mode, ks_engine **result)
 
     if (arch < KS_ARCH_MAX) {
         ks = (struct ks_struct *)calloc(1, sizeof(*ks));
+        ks = new(ks) ks_struct;
         if (!ks) {
             // memory insufficient
             return KS_ERR_NOMEM;