mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
Merge pull request #490 from monaka/pr-avoid-memcpy-on-copying-structures
Avoid memcpy() on copying structure.
This commit is contained in:
+9
-9
@@ -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
|
||||
|
||||
+1
-1
@@ -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;
|
||||
}
|
||||
|
||||
+1
-1
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user