Commit e7ff2bf7 authored by Yukihiro Matsumoto's avatar Yukihiro Matsumoto

Merge branch 'master' of github.com:mruby/mruby

parents 76f28241 019fd70f
......@@ -2,7 +2,7 @@
# initial system defaults
if(CMAKE_COMPILER_IS_GNUCC)
set(MRUBY_DEFAULT_CFLAGS "-Wall -Werror-implicit-function-declaration")
set(MRUBY_DEFAULT_CFLAGS "-std=gnu99 -Wall -Werror-implicit-function-declaration -Wall -Wextra -Wno-unused-parameter -Wno-sign-compare -Wno-pointer-sign -Wno-missing-field-initializers -Wformat=2 -Wstrict-aliasing=2 -Wdisabled-optimization -Wpointer-arith -Wdeclaration-after-statement -Wbad-function-cast -Wcast-align -Wredundant-decls")
set(CMAKE_C_FLAGS "${MRUBY_DEFAULT_CFLAGS}")
set(CMAKE_C_FLAGS_DEBUG "-O3 -ggdb")
set(CMAKE_C_FLAGS_MINSIZEREL "-Os -DNDEBUG")
......
......@@ -786,6 +786,8 @@ mrb_singleton_class(mrb_state *mrb, mrb_value v)
return mrb_obj_value(mrb->false_class);
case MRB_TT_TRUE:
return mrb_obj_value(mrb->true_class);
case MRB_TT_MAIN:
return mrb_obj_value(mrb->object_class);
case MRB_TT_SYMBOL:
case MRB_TT_FIXNUM:
case MRB_TT_FLOAT:
......
......@@ -111,22 +111,22 @@ load_rite_header(FILE* fp, rite_binary_header* bin_header, unsigned char* hcrc)
if (fread(&file_header, 1, sizeof(file_header), fp) < sizeof(file_header)) {
return MRB_DUMP_READ_FAULT;
}
memcpy(bin_header->rbfi, file_header.rbfi, sizeof(file_header.rbfi));
*bin_header->rbfi = *file_header.rbfi;
if (memcmp(bin_header->rbfi, RITE_FILE_IDENFIFIER, sizeof(bin_header->rbfi)) != 0) {
return MRB_DUMP_INVALID_FILE_HEADER; //File identifier error
}
memcpy(bin_header->rbfv, file_header.rbfv, sizeof(file_header.rbfv));
*bin_header->rbfv = *file_header.rbfv;
if (memcmp(bin_header->rbfv, RITE_FILE_FORMAT_VER, sizeof(bin_header->rbfv)) != 0) {
return MRB_DUMP_INVALID_FILE_HEADER; //File format version error
}
memcpy(bin_header->risv, file_header.risv, sizeof(file_header.risv));
memcpy(bin_header->rct, file_header.rct, sizeof(file_header.rct));
memcpy(bin_header->rcv, file_header.rcv, sizeof(file_header.rcv));
*bin_header->risv = *file_header.risv;
*bin_header->rct = *file_header.rct;
*bin_header->rcv = *file_header.rcv;
hex_to_bin32(bin_header->rbds, file_header.rbds);
hex_to_bin16(bin_header->nirep, file_header.nirep);
hex_to_bin16(bin_header->sirep, file_header.sirep);
memcpy(bin_header->rsv, file_header.rsv, sizeof(file_header.rsv));
memcpy(hcrc, file_header.hcrc, sizeof(file_header.hcrc));
*bin_header->rsv = *file_header.rsv;
*hcrc = *file_header.hcrc;
return MRB_DUMP_OK;
}
......@@ -267,7 +267,7 @@ mrb_load_irep(mrb_state *mrb, FILE* fp)
dst = rite_dst;
memset(dst, 0x00, len);
memcpy(dst, &bin_header, sizeof(rite_binary_header));
*(rite_binary_header *)dst = bin_header;
dst += sizeof(rite_binary_header);
dst += hex_to_bin16(dst, hcrc);
......@@ -302,7 +302,7 @@ read_rite_header(mrb_state *mrb, unsigned char *bin, rite_binary_header* bin_he
{
uint16_t crc;
memcpy(bin_header, bin, sizeof(rite_binary_header));
*bin_header = *(rite_binary_header *)bin;
bin += sizeof(rite_binary_header);
if (memcmp(bin_header->rbfi, RITE_FILE_IDENFIFIER, sizeof(bin_header->rbfi)) != 0) {
return MRB_DUMP_INVALID_FILE_HEADER; //File identifier error
......
......@@ -415,7 +415,7 @@ range_initialize_copy(mrb_state *mrb, mrb_value copy)
if (!mrb_obj_is_instance_of(mrb, src, mrb_obj_class(mrb, copy))) {
mrb_raise(mrb, E_TYPE_ERROR, "wrong argument class");
}
memcpy(mrb_range_ptr(copy), mrb_range_ptr(src), sizeof(struct RRange));
*mrb_range_ptr(copy) = *mrb_range_ptr(src);
return copy;
}
......
......@@ -559,7 +559,7 @@ mrb_time_initialize_copy(mrb_state *mrb, mrb_value copy)
DATA_PTR(copy) = mrb_malloc(mrb, sizeof(struct mrb_time));
DATA_TYPE(copy) = &mrb_time_type;
}
memcpy(DATA_PTR(copy), DATA_PTR(src), sizeof(struct mrb_time));
*(struct mrb_time *)DATA_PTR(copy) = *(struct mrb_time *)DATA_PTR(src);
return copy;
}
......
......@@ -204,6 +204,16 @@ assert('Kernel#extend', '15.3.1.3.13') do
a.respond_to?(:test_method) == true && b.respond_to?(:test_method) == false
end
assert('Kernel#extend works on toplevel', '15.3.1.3.13') do
module Test4ExtendModule
def test_method; end
end
# This would crash...
extend(Test4ExtendModule)
respond_to?(:test_method) == true
end
assert('Kernel#global_variables', '15.3.1.3.14') do
global_variables.class == Array
end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment