summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2017-09-29 00:18:39 +0900
committerGitHub <[email protected]>2017-09-29 00:18:39 +0900
commit29a9e698e33f89c18cd8f9622bd503aa55df2f51 (patch)
treee83110a7db0edaa3a6c191abe850ed7b657f766e /src
parent381850280c036116adaffe42cc420da9c71d28a2 (diff)
parent999ce87129fb9216ae746140aa716a764a79b354 (diff)
downloadmruby-29a9e698e33f89c18cd8f9622bd503aa55df2f51.tar.gz
mruby-29a9e698e33f89c18cd8f9622bd503aa55df2f51.zip
Merge pull request #3815 from dabroz/fix-warnings
Fix MSVC 14.0 warnings
Diffstat (limited to 'src')
-rw-r--r--src/backtrace.c3
-rw-r--r--src/class.c6
-rw-r--r--src/dump.c4
-rw-r--r--src/error.c4
-rw-r--r--src/gc.c6
-rw-r--r--src/hash.c4
-rw-r--r--src/kernel.c2
-rw-r--r--src/numeric.c6
-rw-r--r--src/object.c2
-rw-r--r--src/pool.c11
-rw-r--r--src/proc.c2
-rw-r--r--src/range.c2
-rw-r--r--src/state.c2
-rw-r--r--src/string.c12
-rw-r--r--src/vm.c18
15 files changed, 48 insertions, 36 deletions
diff --git a/src/backtrace.c b/src/backtrace.c
index 3e4e1a438..232d1c2f4 100644
--- a/src/backtrace.c
+++ b/src/backtrace.c
@@ -75,7 +75,8 @@ each_backtrace(mrb_state *mrb, ptrdiff_t ciidx, mrb_code *pc0, each_backtrace_fu
static void
print_backtrace(mrb_state *mrb, mrb_value backtrace)
{
- int i, n;
+ int i;
+ mrb_int n;
FILE *stream = stderr;
if (!mrb_array_p(backtrace)) return;
diff --git a/src/class.c b/src/class.c
index 44121bce6..f220106cd 100644
--- a/src/class.c
+++ b/src/class.c
@@ -567,10 +567,10 @@ mrb_get_args(mrb_state *mrb, const char *format, ...)
{
const char *fmt = format;
char c;
- int i = 0;
+ mrb_int i = 0;
va_list ap;
- int argc = mrb->c->ci->argc;
- int arg_i = 0;
+ mrb_int argc = mrb->c->ci->argc;
+ mrb_int arg_i = 0;
mrb_value *array_argv;
mrb_bool opt = FALSE;
mrb_bool opt_skip = TRUE;
diff --git a/src/dump.c b/src/dump.c
index d479a1a4f..71d2f7184 100644
--- a/src/dump.c
+++ b/src/dump.c
@@ -654,7 +654,7 @@ write_section_debug(mrb_state *mrb, mrb_irep *irep, uint8_t *cur, mrb_sym const
for (i = 0; i < filenames_len; ++i) {
sym = mrb_sym2name_len(mrb, filenames[i], &sym_len);
mrb_assert(sym);
- cur += uint16_to_bin(sym_len, cur);
+ cur += uint16_to_bin((uint16_t)sym_len, cur);
memcpy(cur, sym, sym_len);
cur += sym_len;
section_size += sizeof(uint16_t) + sym_len;
@@ -707,7 +707,7 @@ write_lv_sym_table(mrb_state *mrb, uint8_t **start, mrb_sym const *syms, uint32_
for (i = 0; i < syms_len; ++i) {
str = mrb_sym2name_len(mrb, syms[i], &str_len);
- cur += uint16_to_bin(str_len, cur);
+ cur += uint16_to_bin((uint16_t)str_len, cur);
memcpy(cur, str, str_len);
cur += str_len;
}
diff --git a/src/error.c b/src/error.c
index 2c4fd1a40..fd4182eb2 100644
--- a/src/error.c
+++ b/src/error.c
@@ -71,7 +71,7 @@ exc_exception(mrb_state *mrb, mrb_value self)
{
mrb_value exc;
mrb_value a;
- int argc;
+ mrb_int argc;
argc = mrb_get_args(mrb, "|o", &a);
if (argc == 0) return self;
@@ -386,7 +386,7 @@ mrb_bug(mrb_state *mrb, const char *fmt, ...)
}
MRB_API mrb_value
-mrb_make_exception(mrb_state *mrb, int argc, const mrb_value *argv)
+mrb_make_exception(mrb_state *mrb, mrb_int argc, const mrb_value *argv)
{
mrb_value mesg;
int n;
diff --git a/src/gc.c b/src/gc.c
index 1e7ff5f5a..6d23354ae 100644
--- a/src/gc.c
+++ b/src/gc.c
@@ -551,7 +551,7 @@ mark_context_stack(mrb_state *mrb, struct mrb_context *c)
size_t i;
size_t e;
mrb_value nil;
- int nregs;
+ mrb_int nregs;
if (c->stack == NULL) return;
e = c->stack - c->stbase;
@@ -1389,7 +1389,7 @@ gc_interval_ratio_set(mrb_state *mrb, mrb_value obj)
mrb_int ratio;
mrb_get_args(mrb, "i", &ratio);
- mrb->gc.interval_ratio = ratio;
+ mrb->gc.interval_ratio = (int)ratio;
return mrb_nil_value();
}
@@ -1422,7 +1422,7 @@ gc_step_ratio_set(mrb_state *mrb, mrb_value obj)
mrb_int ratio;
mrb_get_args(mrb, "i", &ratio);
- mrb->gc.step_ratio = ratio;
+ mrb->gc.step_ratio = (int)ratio;
return mrb_nil_value();
}
diff --git a/src/hash.c b/src/hash.c
index 93d550187..53ef2b818 100644
--- a/src/hash.c
+++ b/src/hash.c
@@ -37,7 +37,7 @@ mrb_hash_ht_hash_func(mrb_state *mrb, mrb_value key)
default:
hv = mrb_funcall(mrb, key, "hash", 0);
- h = (khint_t)t ^ mrb_fixnum(hv);
+ h = (khint_t)t ^ (khint_t)mrb_fixnum(hv);
break;
}
return kh_int_hash_func(mrb, h);
@@ -136,7 +136,7 @@ mrb_hash_new_capa(mrb_state *mrb, mrb_int capa)
h = (struct RHash*)mrb_obj_alloc(mrb, MRB_TT_HASH, mrb->hash_class);
/* khash needs 1/4 empty space so it is not resized immediately */
- h->ht = kh_init_size(ht, mrb, capa*4/3);
+ h->ht = kh_init_size(ht, mrb, (khint_t)(capa*4/3));
h->iv = 0;
return mrb_obj_value(h);
}
diff --git a/src/kernel.c b/src/kernel.c
index 4e95ab24b..33d142184 100644
--- a/src/kernel.c
+++ b/src/kernel.c
@@ -855,7 +855,7 @@ MRB_API mrb_value
mrb_f_raise(mrb_state *mrb, mrb_value self)
{
mrb_value a[2], exc;
- int argc;
+ mrb_int argc;
argc = mrb_get_args(mrb, "|oo", &a[0], &a[1]);
diff --git a/src/numeric.c b/src/numeric.c
index afb8415a0..8c7d448bd 100644
--- a/src/numeric.c
+++ b/src/numeric.c
@@ -877,7 +877,7 @@ static mrb_value flo_or(mrb_state *mrb, mrb_value x);
static mrb_value flo_xor(mrb_state *mrb, mrb_value x);
#define bit_op(x,y,op1,op2) do {\
if (mrb_fixnum_p(y)) return mrb_fixnum_value(mrb_fixnum(x) op2 mrb_fixnum(y));\
- return flo_ ## op1(mrb, mrb_float_value(mrb, mrb_fixnum(x)));\
+ return flo_ ## op1(mrb, mrb_float_value(mrb, (mrb_float)mrb_fixnum(x)));\
} while(0)
/* 15.2.8.3.9 */
@@ -951,7 +951,7 @@ lshift(mrb_state *mrb, mrb_int val, mrb_int width)
(val < (MRB_INT_MIN >> width))) {
goto bit_overflow;
}
- return mrb_fixnum_value(val * (1u << width));
+ return mrb_fixnum_value(val * ((mrb_int)1 << width));
}
bit_overflow:
@@ -1162,7 +1162,7 @@ fix_minus(mrb_state *mrb, mrb_value self)
MRB_API mrb_value
-mrb_fixnum_to_str(mrb_state *mrb, mrb_value x, int base)
+mrb_fixnum_to_str(mrb_state *mrb, mrb_value x, mrb_int base)
{
char buf[MRB_INT_BIT+1];
char *b = buf + sizeof buf;
diff --git a/src/object.c b/src/object.c
index 368e90b9f..388a34b44 100644
--- a/src/object.c
+++ b/src/object.c
@@ -523,7 +523,7 @@ mrb_to_int(mrb_state *mrb, mrb_value val)
}
MRB_API mrb_value
-mrb_convert_to_integer(mrb_state *mrb, mrb_value val, int base)
+mrb_convert_to_integer(mrb_state *mrb, mrb_value val, mrb_int base)
{
mrb_value tmp;
diff --git a/src/pool.c b/src/pool.c
index db4546abf..b87d2cfaa 100644
--- a/src/pool.c
+++ b/src/pool.c
@@ -25,6 +25,13 @@
#endif
/* end of configuration section */
+/* Disable MSVC warning "C4200: nonstandard extension used: zero-sized array
+ * in struct/union" when in C++ mode */
+#ifdef _MSC_VER
+#pragma warning(push)
+#pragma warning(disable : 4200)
+#endif
+
struct mrb_pool_page {
struct mrb_pool_page *next;
size_t offset;
@@ -33,6 +40,10 @@ struct mrb_pool_page {
char page[];
};
+#ifdef _MSC_VER
+#pragma warning(pop)
+#endif
+
struct mrb_pool {
mrb_state *mrb;
struct mrb_pool_page *pages;
diff --git a/src/proc.c b/src/proc.c
index 10a2c4f33..a6214f1fc 100644
--- a/src/proc.c
+++ b/src/proc.c
@@ -35,7 +35,7 @@ mrb_proc_new(mrb_state *mrb, mrb_irep *irep)
}
static struct REnv*
-env_new(mrb_state *mrb, int nlocals)
+env_new(mrb_state *mrb, mrb_int nlocals)
{
struct REnv *e;
diff --git a/src/range.c b/src/range.c
index eb9a9c61f..c6a5ea924 100644
--- a/src/range.c
+++ b/src/range.c
@@ -131,7 +131,7 @@ mrb_range_initialize(mrb_state *mrb, mrb_value range)
{
mrb_value beg, end;
mrb_bool exclusive;
- int n;
+ mrb_int n;
n = mrb_get_args(mrb, "oo|b", &beg, &end, &exclusive);
if (n != 3) {
diff --git a/src/state.c b/src/state.c
index 039d67d57..678f58e9c 100644
--- a/src/state.c
+++ b/src/state.c
@@ -63,7 +63,7 @@ mrb_default_allocf(mrb_state *mrb, void *p, size_t size, void *ud)
struct alloca_header {
struct alloca_header *next;
- char buf[];
+ char buf[1];
};
MRB_API void*
diff --git a/src/string.c b/src/string.c
index 01d706fa3..1b57efc71 100644
--- a/src/string.c
+++ b/src/string.c
@@ -488,7 +488,7 @@ check_frozen(mrb_state *mrb, struct RString *s)
static mrb_value
str_replace(mrb_state *mrb, struct RString *s1, struct RString *s2)
{
- long len;
+ mrb_int len;
check_frozen(mrb, s1);
if (s1 == s2) return mrb_obj_value(s1);
@@ -1125,7 +1125,7 @@ static mrb_value
mrb_str_aref_m(mrb_state *mrb, mrb_value str)
{
mrb_value a1, a2;
- int argc;
+ mrb_int argc;
argc = mrb_get_args(mrb, "o|o", &a1, &a2);
if (argc == 2) {
@@ -1467,7 +1467,7 @@ mrb_str_substr(mrb_state *mrb, mrb_value str, mrb_int beg, mrb_int len)
return str_substr(mrb, str, beg, len);
}
-mrb_int
+uint32_t
mrb_str_hash(mrb_state *mrb, mrb_value str)
{
/* 1-8-7 */
@@ -1480,7 +1480,7 @@ mrb_str_hash(mrb_state *mrb, mrb_value str)
key = key*65599 + *p;
p++;
}
- return (mrb_int)(key + (key>>5));
+ return (uint32_t)(key + (key>>5));
}
/* 15.2.10.5.20 */
@@ -1911,7 +1911,7 @@ mrb_str_rindex(mrb_state *mrb, mrb_value str)
static mrb_value
mrb_str_split_m(mrb_state *mrb, mrb_value str)
{
- int argc;
+ mrb_int argc;
mrb_value spat = mrb_nil_value();
enum {awk, string, regexp} split_type = string;
mrb_int i = 0;
@@ -2025,7 +2025,7 @@ mrb_str_split_m(mrb_state *mrb, mrb_value str)
}
MRB_API mrb_value
-mrb_str_len_to_inum(mrb_state *mrb, const char *str, size_t len, int base, int badcheck)
+mrb_str_len_to_inum(mrb_state *mrb, const char *str, mrb_int len, mrb_int base, int badcheck)
{
const char *p = str;
const char *pend = str + len;
diff --git a/src/vm.c b/src/vm.c
index 2b0922cd9..b5a2aa7bf 100644
--- a/src/vm.c
+++ b/src/vm.c
@@ -435,14 +435,14 @@ mrb_funcall_with_block(mrb_state *mrb, mrb_value self, mrb_sym mid, mrb_int argc
ci->mid = mid;
ci->proc = p;
ci->stackent = mrb->c->stack;
- ci->argc = argc;
+ ci->argc = (int)argc;
ci->target_class = c;
mrb->c->stack = mrb->c->stack + n;
if (mrb->c->stbase <= argv && argv < mrb->c->stend) {
voff = argv - mrb->c->stbase;
}
if (MRB_PROC_CFUNC_P(p)) {
- ci->nregs = argc + 2;
+ ci->nregs = (int)(argc + 2);
stack_extend(mrb, ci->nregs);
}
else if (argc >= CALL_MAXARGS) {
@@ -454,7 +454,7 @@ mrb_funcall_with_block(mrb_state *mrb, mrb_value self, mrb_sym mid, mrb_int argc
}
else {
if (argc < 0) argc = 1;
- ci->nregs = p->body.irep->nregs + argc;
+ ci->nregs = (int)(p->body.irep->nregs + argc);
stack_extend(mrb, ci->nregs);
}
if (voff >= 0) {
@@ -701,11 +701,11 @@ mrb_yield_with_class(mrb_state *mrb, mrb_value b, mrb_int argc, const mrb_value
ci->mid = mid;
ci->proc = p;
ci->stackent = mrb->c->stack;
- ci->argc = argc;
+ ci->argc = (int)argc;
ci->target_class = c;
ci->acc = CI_ACC_SKIP;
mrb->c->stack = mrb->c->stack + n;
- ci->nregs = MRB_PROC_CFUNC_P(p) ? argc+2 : p->body.irep->nregs;
+ ci->nregs = MRB_PROC_CFUNC_P(p) ? (int)(argc+2) : p->body.irep->nregs;
stack_extend(mrb, ci->nregs);
mrb->c->stack[0] = self;
@@ -1699,7 +1699,7 @@ RETRY_TRY_BLOCK:
struct RArray *ary = mrb_ary_ptr(stack[m1]);
pp = ARY_PTR(ary);
- len = ARY_LEN(ary);
+ len = (int)ARY_LEN(ary);
}
regs[a] = mrb_ary_new_capa(mrb, m1+len+m2);
rest = mrb_ary_ptr(regs[a]);
@@ -1741,7 +1741,7 @@ RETRY_TRY_BLOCK:
if (argc < 0) {
struct RArray *ary = mrb_ary_ptr(regs[1]);
argv = ARY_PTR(ary);
- argc = ARY_LEN(ary);
+ argc = (int)ARY_LEN(ary);
mrb_gc_protect(mrb, regs[1]);
}
if (mrb->c->ci->proc && MRB_PROC_STRICT_P(mrb->c->ci->proc)) {
@@ -1754,7 +1754,7 @@ RETRY_TRY_BLOCK:
}
else if (len > 1 && argc == 1 && mrb_array_p(argv[0])) {
mrb_gc_protect(mrb, argv[0]);
- argc = RARRAY_LEN(argv[0]);
+ argc = (int)RARRAY_LEN(argv[0]);
argv = RARRAY_PTR(argv[0]);
}
if (argc < len) {
@@ -2628,7 +2628,7 @@ RETRY_TRY_BLOCK:
v = mrb_ary_new_from_values(mrb, 1, &regs[a]);
}
ary = mrb_ary_ptr(v);
- len = ARY_LEN(ary);
+ len = (int)ARY_LEN(ary);
if (len > pre + post) {
v = mrb_ary_new_from_values(mrb, len - pre - post, ARY_PTR(ary)+pre);
regs[a++] = v;