diff options
| author | cremno <[email protected]> | 2015-04-28 14:40:22 +0200 |
|---|---|---|
| committer | cremno <[email protected]> | 2015-04-28 14:40:22 +0200 |
| commit | 0518ab22c4758712a78be436620d4e2cab69d7c2 (patch) | |
| tree | bccf8e6e295eec35dac7bc3eee2b4ae403a349d5 /src/load.c | |
| parent | 41e69319874e8b975e4fac684ec69c05d33981ed (diff) | |
| download | mruby-0518ab22c4758712a78be436620d4e2cab69d7c2.tar.gz mruby-0518ab22c4758712a78be436620d4e2cab69d7c2.zip | |
unify error handling
Convert mrb_read_irep_file() to use goto like read_section_lv() and
read_section_debug() already do.
Diffstat (limited to 'src/load.c')
| -rw-r--r-- | src/load.c | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/src/load.c b/src/load.c index 889420ae9..17bbb13eb 100644 --- a/src/load.c +++ b/src/load.c @@ -670,23 +670,21 @@ mrb_read_irep_file(mrb_state *mrb, FILE* fp) /* You don't need use SIZE_ERROR as buf_size is enough small. */ buf = (uint8_t*)mrb_malloc(mrb, header_size); if (fread(buf, header_size, 1, fp) == 0) { - mrb_free(mrb, buf); - return NULL; + goto irep_exit; } result = read_binary_header(buf, &buf_size, NULL, &flags); if (result != MRB_DUMP_OK) { - mrb_free(mrb, buf); - return NULL; + goto irep_exit; } buf = (uint8_t*)mrb_realloc(mrb, buf, buf_size); if (fread(buf+header_size, buf_size-header_size, 1, fp) == 0) { - mrb_free(mrb, buf); - return NULL; + goto irep_exit; } irep = read_irep(mrb, buf, FLAG_SRC_MALLOC); - mrb_free(mrb, buf); +irep_exit: + mrb_free(mrb, buf); return irep; } |
