fix more MSVC warnings
diff --git a/arch/AArch64/AArch64InstPrinter.c b/arch/AArch64/AArch64InstPrinter.c
index b94c44c..e7881e9 100644
--- a/arch/AArch64/AArch64InstPrinter.c
+++ b/arch/AArch64/AArch64InstPrinter.c
@@ -1576,7 +1576,7 @@
arm64_vess vess = 0;
if (NumLanes) {
- snprintf(Suffix, sizeof(Suffix), ".%u%c", NumLanes, LaneKind);
+ cs_snprintf(Suffix, sizeof(Suffix), ".%u%c", NumLanes, LaneKind);
switch(LaneKind) {
default: break;
case 'b':
@@ -1633,7 +1633,7 @@
break;
}
} else {
- snprintf(Suffix, sizeof(Suffix), ".%c", LaneKind);
+ cs_snprintf(Suffix, sizeof(Suffix), ".%c", LaneKind);
switch(LaneKind) {
default: break;
case 'b':
diff --git a/arch/AArch64/AArch64Mapping.c b/arch/AArch64/AArch64Mapping.c
index 87ae02f..cbd6c3a 100644
--- a/arch/AArch64/AArch64Mapping.c
+++ b/arch/AArch64/AArch64Mapping.c
@@ -14959,7 +14959,7 @@
{
if (MI->csh->detail) {
MI->flat_insn->detail->arm64.operands[MI->flat_insn->detail->arm64.op_count].type = ARM64_OP_IMM;
- MI->flat_insn->detail->arm64.operands[MI->flat_insn->detail->arm64.op_count].imm = imm;
+ MI->flat_insn->detail->arm64.operands[MI->flat_insn->detail->arm64.op_count].imm = (int)imm;
MI->flat_insn->detail->arm64.op_count++;
}
}
diff --git a/arch/Mips/MipsDisassembler.c b/arch/Mips/MipsDisassembler.c
index 6359bcd..55c8234 100644
--- a/arch/Mips/MipsDisassembler.c
+++ b/arch/Mips/MipsDisassembler.c
@@ -496,7 +496,7 @@
uint32_t Rs = fieldFromInstruction(insn, 21, 5);
uint32_t Rt = fieldFromInstruction(insn, 16, 5);
- uint32_t Imm = SignExtend64(fieldFromInstruction(insn, 0, 16), 16) << 2;
+ uint32_t Imm = (uint32_t)SignExtend64(fieldFromInstruction(insn, 0, 16), 16) << 2;
bool HasRs = false;
if (Rs >= Rt) {
@@ -532,7 +532,7 @@
uint32_t Rs = fieldFromInstruction(insn, 21, 5);
uint32_t Rt = fieldFromInstruction(insn, 16, 5);
- uint32_t Imm = SignExtend64(fieldFromInstruction(insn, 0, 16), 16) << 2;
+ uint32_t Imm = (uint32_t)SignExtend64(fieldFromInstruction(insn, 0, 16), 16) << 2;
bool HasRs = false;
if (Rs >= Rt) {
@@ -569,7 +569,7 @@
uint32_t Rs = fieldFromInstruction(insn, 21, 5);
uint32_t Rt = fieldFromInstruction(insn, 16, 5);
- uint32_t Imm = SignExtend64(fieldFromInstruction(insn, 0, 16), 16) << 2;
+ uint32_t Imm = (uint32_t)SignExtend64(fieldFromInstruction(insn, 0, 16), 16) << 2;
bool HasRs = false;
if (Rt == 0)
@@ -611,7 +611,7 @@
uint32_t Rs = fieldFromInstruction(insn, 21, 5);
uint32_t Rt = fieldFromInstruction(insn, 16, 5);
- uint32_t Imm = SignExtend64(fieldFromInstruction(insn, 0, 16), 16) << 2;
+ uint32_t Imm = (uint32_t)SignExtend64(fieldFromInstruction(insn, 0, 16), 16) << 2;
if (Rt == 0)
return MCDisassembler_Fail;
@@ -649,7 +649,7 @@
uint32_t Rs = fieldFromInstruction(insn, 21, 5);
uint32_t Rt = fieldFromInstruction(insn, 16, 5);
- uint32_t Imm = SignExtend64(fieldFromInstruction(insn, 0, 16), 16) << 2;
+ uint32_t Imm = (uint32_t)SignExtend64(fieldFromInstruction(insn, 0, 16), 16) << 2;
bool HasRs = false;
bool HasRt = false;
@@ -695,7 +695,7 @@
uint32_t Rs = fieldFromInstruction(insn, 21, 5);
uint32_t Rt = fieldFromInstruction(insn, 16, 5);
- uint32_t Imm = SignExtend64(fieldFromInstruction(insn, 0, 16), 16) << 2;
+ uint32_t Imm = (uint32_t)SignExtend64(fieldFromInstruction(insn, 0, 16), 16) << 2;
bool HasRs = false;
if (Rt == 0)
diff --git a/arch/Sparc/SparcInstPrinter.c b/arch/Sparc/SparcInstPrinter.c
index d395700..ebd3091 100644
--- a/arch/Sparc/SparcInstPrinter.c
+++ b/arch/Sparc/SparcInstPrinter.c
@@ -16,6 +16,10 @@
#ifdef CAPSTONE_HAS_SPARC
+#ifdef _MSC_VER
+#define _CRT_SECURE_NO_WARNINGS
+#endif
+
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
diff --git a/cs.c b/cs.c
index 2095280..9cc98a3 100644
--- a/cs.c
+++ b/cs.c
@@ -517,7 +517,7 @@
if (handle->skipdata_setup.callback) {
skipdata_bytes = handle->skipdata_setup.callback(buffer_org, size_org,
- offset - offset_org, handle->skipdata_setup.user_data);
+ (size_t)(offset - offset_org), handle->skipdata_setup.user_data);
if (skipdata_bytes > size)
// remaining data is not enough
break;
diff --git a/utils.c b/utils.c
index f322d05..79c5a0f 100644
--- a/utils.c
+++ b/utils.c
@@ -69,3 +69,16 @@
return (char *)memmove(new, str, len);
}
+
+// we need this since Windows doesnt have snprintf()
+int cs_snprintf(char *buffer, size_t size, const char *fmt, ...)
+{
+ int ret;
+
+ va_list ap;
+ va_start(ap, fmt);
+ ret = cs_vsnprintf(buffer, size, fmt, ap);
+ va_end(ap);
+
+ return ret;
+}
diff --git a/utils.h b/utils.h
index 9ac117b..60ed822 100644
--- a/utils.h
+++ b/utils.h
@@ -48,5 +48,8 @@
#define MIN(x, y) ((x) < (y) ? (x) : (y))
+// we need this since Windows doesnt have snprintf()
+int cs_snprintf(char *buffer, size_t size, const char *fmt, ...);
+
#endif