mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
Fix underlying memory leaks. When realloc is failed, memories are leaked.
This commit is contained in:
+17
-2
@@ -389,12 +389,19 @@ read_rite_section_lineno_file(mrb_state *mrb, FILE *fp, size_t sirep)
|
||||
|
||||
//Read Binary Data Section
|
||||
for (n = 0, i = sirep; n < nirep; n++, i++) {
|
||||
void *ptr;
|
||||
|
||||
if (fread(buf, record_header_size, 1, fp) == 0) {
|
||||
result = MRB_DUMP_READ_FAULT;
|
||||
goto error_exit;
|
||||
}
|
||||
buf_size = bin_to_uint32(&buf[0]);
|
||||
buf = (uint8_t *)mrb_realloc(mrb, buf, buf_size);
|
||||
ptr = mrb_realloc(mrb, buf, buf_size);
|
||||
if (!ptr) {
|
||||
result = MRB_DUMP_GENERAL_FAILURE;
|
||||
goto error_exit;
|
||||
}
|
||||
buf = (uint8_t *)ptr;
|
||||
|
||||
if (fread(&buf[record_header_size], buf_size - record_header_size, 1, fp) == 0) {
|
||||
result = MRB_DUMP_READ_FAULT;
|
||||
@@ -439,12 +446,20 @@ read_rite_section_irep_file(mrb_state *mrb, FILE *fp)
|
||||
|
||||
//Read Binary Data Section
|
||||
for (n = 0, i = sirep; n < nirep; n++, i++) {
|
||||
void *ptr;
|
||||
|
||||
if (fread(buf, record_header_size, 1, fp) == 0) {
|
||||
result = MRB_DUMP_READ_FAULT;
|
||||
goto error_exit;
|
||||
}
|
||||
buf_size = bin_to_uint32(&buf[0]);
|
||||
buf = (uint8_t *)mrb_realloc(mrb, buf, buf_size);
|
||||
ptr = mrb_realloc(mrb, buf, buf_size);
|
||||
if (!ptr) {
|
||||
result = MRB_DUMP_GENERAL_FAILURE;
|
||||
goto error_exit;
|
||||
}
|
||||
buf = (uint8_t *)ptr;
|
||||
|
||||
if (fread(&buf[record_header_size], buf_size - record_header_size, 1, fp) == 0) {
|
||||
result = MRB_DUMP_READ_FAULT;
|
||||
goto error_exit;
|
||||
|
||||
Reference in New Issue
Block a user