diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2013-01-15 14:50:05 -0800 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2013-01-15 14:50:05 -0800 |
| commit | 709c120d14959e40155a5a892fe3e51e60966f9b (patch) | |
| tree | 66ef6752fe7ca94ac1723eb48f7a7a9d95dae460 | |
| parent | 79aa717964ab6f2ffbd51040584225fd2ce8a452 (diff) | |
| parent | 85bdd6346591df1e536111fbce18ee4090c1dc53 (diff) | |
| download | mruby-709c120d14959e40155a5a892fe3e51e60966f9b.tar.gz mruby-709c120d14959e40155a5a892fe3e51e60966f9b.zip | |
Merge pull request #734 from monaka/pr-error-check-inprovement-in-cdump-and-dump
Error check inprovements in cdump and dump
| -rw-r--r-- | include/mruby/cdump.h | 3 | ||||
| -rw-r--r-- | src/cdump.c | 21 | ||||
| -rw-r--r-- | src/dump.c | 4 |
3 files changed, 17 insertions, 11 deletions
diff --git a/include/mruby/cdump.h b/include/mruby/cdump.h index 6afbb985e..ccb5fc06b 100644 --- a/include/mruby/cdump.h +++ b/include/mruby/cdump.h @@ -23,6 +23,9 @@ int mrb_cdump_irep(mrb_state *mrb, int n, FILE *f,const char *initname); /* error code */ #define MRB_CDUMP_OK 0 #define MRB_CDUMP_GENERAL_FAILURE -1 +#define MRB_CDUMP_WRITE_FAULT -2 +#define MRB_CDUMP_INVALID_IREP -6 +#define MRB_CDUMP_INVALID_ARGUMENT -7 #if defined(__cplusplus) } /* extern "C" { */ diff --git a/src/cdump.c b/src/cdump.c index 7cb159046..247511f5a 100644 --- a/src/cdump.c +++ b/src/cdump.c @@ -23,7 +23,7 @@ make_cdump_isec(mrb_state *mrb, int irep_no, FILE *f) mrb_irep *irep = mrb->irep[irep_no]; if (irep == NULL) - return -1; + return MRB_CDUMP_INVALID_IREP; /* dump isec struct*/ if (irep->ilen > 0) { @@ -34,7 +34,7 @@ make_cdump_isec(mrb_state *mrb, int irep_no, FILE *f) SOURCE_CODE0 (""); } - return 0; + return MRB_CDUMP_OK; } static size_t @@ -104,7 +104,7 @@ make_cdump_irep(mrb_state *mrb, int irep_no, FILE *f) size_t buf_len, str_len; if (irep == NULL) - return -1; + return MRB_CDUMP_INVALID_IREP; buf_len = MRB_CDUMP_LINE_LEN; if ((buf = (char *)mrb_malloc(mrb, buf_len)) == NULL) { @@ -176,9 +176,10 @@ int mrb_cdump_irep(mrb_state *mrb, int n, FILE *f,const char *initname) { int irep_no; + int error; if (mrb == NULL || n < 0 || n >= mrb->irep_len || f == NULL || initname == NULL) - return -1; + return MRB_CDUMP_INVALID_ARGUMENT; SOURCE_CODE0("#include \"mruby.h\""); SOURCE_CODE0("#include \"mruby/irep.h\""); @@ -187,8 +188,9 @@ mrb_cdump_irep(mrb_state *mrb, int n, FILE *f,const char *initname) SOURCE_CODE0(""); for (irep_no=n; irep_no<mrb->irep_len; irep_no++) { - if (make_cdump_isec(mrb, irep_no, f) != 0) - return -1; + error = make_cdump_isec(mrb, irep_no, f); + if (error != MRB_CDUMP_OK) + return error; } SOURCE_CODE0("void"); @@ -200,12 +202,13 @@ mrb_cdump_irep(mrb_state *mrb, int n, FILE *f,const char *initname) SOURCE_CODE0(" mrb_irep *irep;"); SOURCE_CODE0(""); for (irep_no=n; irep_no<mrb->irep_len; irep_no++) { - if (make_cdump_irep(mrb, irep_no, f) != 0) - return -1; + error = make_cdump_irep(mrb, irep_no, f); + if (error != MRB_CDUMP_OK) + return error; } SOURCE_CODE0(" mrb_run(mrb, mrb_proc_new(mrb, mrb->irep[n]), mrb_top_self(mrb));"); SOURCE_CODE0("}"); - return 0; + return MRB_CDUMP_OK; } diff --git a/src/dump.c b/src/dump.c index 409cc7ec8..884a9141f 100644 --- a/src/dump.c +++ b/src/dump.c @@ -690,7 +690,7 @@ mrb_write_irep(mrb_state *mrb, int top, char *bin) for (irep_no=top; irep_no<mrb->irep_len; irep_no++) { rc = write_irep_record(mrb, irep_no, bin, &rlen, DUMP_TYPE_BIN); - if (rc != 0) + if (rc != MRB_DUMP_OK) return rc; bin += (rlen + DUMP_SIZE(MRB_DUMP_SIZE_OF_LONG, DUMP_TYPE_BIN)); @@ -719,7 +719,7 @@ mrb_dump_irep(mrb_state *mrb, int top, FILE* fp) for (irep_no=top; irep_no<mrb->irep_len; irep_no++) { rc = dump_irep_record(mrb, irep_no, fp, &rlen); - if (rc != 0) + if (rc != MRB_DUMP_OK) return rc; rbds += rlen; |
