From 6fee3f4535339bc533b81d3ede9b0e9a11a6c6dd Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Mon, 17 Apr 2006 17:36:07 +0000 Subject: [PATCH] (CANT_REACH): New. Use it instead of CANT_HAPPEN() where possible. (oops): Cope with NULL argument passed by CANT_REACH(). --- include/misc.h | 9 ++++++++- src/lib/commands/buil.c | 2 +- src/lib/commands/load.c | 2 +- src/lib/commands/prod.c | 2 +- src/lib/commands/xdump.c | 2 +- src/lib/common/log.c | 2 +- src/lib/common/maps.c | 2 +- src/lib/gen/service.c | 2 +- src/lib/subs/nstr.c | 14 +++++++------- src/lib/subs/nxtitem.c | 2 +- src/lib/subs/trdsub.c | 2 +- src/lib/update/nxtitemp.c | 2 +- src/server/main.c | 2 +- 13 files changed, 26 insertions(+), 19 deletions(-) diff --git a/include/misc.h b/include/misc.h index 8208c258..d476f4d1 100644 --- a/include/misc.h +++ b/include/misc.h @@ -113,9 +113,16 @@ extern int daemonize; /* * If EXPR is true, an internal error occured. * Return EXPR != 0. - * Usage: if (CANT_HAPPEN(...)) recovery_code(); + * Usage: if (CANT_HAPPEN(...)) ; */ #define CANT_HAPPEN(expr) ((expr) ? oops(#expr, __FILE__, __LINE__) : 0) + +/* + * Report internal error. + * Usage: CANT_REACH(); ; + */ +#define CANT_REACH() (void)oops(NULL, __FILE__, __LINE__) + extern int oops(char *, char *, int); /* return codes from command routines */ diff --git a/src/lib/commands/buil.c b/src/lib/commands/buil.c index 2433a86f..d5e8d584 100644 --- a/src/lib/commands/buil.c +++ b/src/lib/commands/buil.c @@ -273,7 +273,7 @@ buil(void) built = build_plane(§, pp, sect.sct_item, tlev); break; default: - CANT_HAPPEN("Bad WHAT"); + CANT_REACH(); return RET_FAIL; } if (built) { diff --git a/src/lib/commands/load.c b/src/lib/commands/load.c index 758f4ae2..6f0cc235 100644 --- a/src/lib/commands/load.c +++ b/src/lib/commands/load.c @@ -337,7 +337,7 @@ gift(natid givee, natid giver, void *ptr, int type, char *mesg) p = prland(ptr); break; default: - CANT_HAPPEN("bad TYPE"); + CANT_REACH(); p = "a red herring"; } diff --git a/src/lib/commands/prod.c b/src/lib/commands/prod.c index 3469ebd8..8497cb0b 100644 --- a/src/lib/commands/prod.c +++ b/src/lib/commands/prod.c @@ -296,7 +296,7 @@ prod(void) pr(" %4.0f ", real); break; default: - CANT_HAPPEN("bad TYPE"); + CANT_REACH(); pr(" ??? "); break; } diff --git a/src/lib/commands/xdump.c b/src/lib/commands/xdump.c index 39f78e06..fba22a97 100644 --- a/src/lib/commands/xdump.c +++ b/src/lib/commands/xdump.c @@ -142,7 +142,7 @@ xdprval(struct valstr *val, char *sep) pr("%snil", sep); break; default: - CANT_HAPPEN("Bad VAL type"); + CANT_REACH(); pr("0"); } return " "; diff --git a/src/lib/common/log.c b/src/lib/common/log.c index 78f2e0df..17e2cdf2 100644 --- a/src/lib/common/log.c +++ b/src/lib/common/log.c @@ -105,7 +105,7 @@ logerror(char *format, ...) int oops(char *msg, char *file, int line) { - logerror("Oops: %s in %s:%d", msg, file, line); + logerror("Oops: %s in %s:%d", msg ? msg : "bug", file, line); if (debug) abort(); return 1; } diff --git a/src/lib/common/maps.c b/src/lib/common/maps.c index 7c43be56..90a21bd9 100644 --- a/src/lib/common/maps.c +++ b/src/lib/common/maps.c @@ -109,7 +109,7 @@ draw_map(int bmap, s_char origin, int map_flags, struct nstr_sect *nsp) int c; switch (bmap) { default: - CANT_HAPPEN("bad BMAP"); + CANT_REACH(); bmap = 'b'; /* fall through */ case 'b': diff --git a/src/lib/gen/service.c b/src/lib/gen/service.c index 4600347a..11dfd5c0 100644 --- a/src/lib/gen/service.c +++ b/src/lib/gen/service.c @@ -204,7 +204,7 @@ service_main(DWORD argc, LPTSTR *argv) empth_exit(); - CANT_HAPPEN("main thread terminated"); + CANT_REACH(); finish_server(); } diff --git a/src/lib/subs/nstr.c b/src/lib/subs/nstr.c index 64e282ec..656398eb 100644 --- a/src/lib/subs/nstr.c +++ b/src/lib/subs/nstr.c @@ -242,7 +242,7 @@ nstr_exec(struct nscstr *np, int ncond, void *ptr) return 0; break; default: - CANT_HAPPEN("bad OPTYPE"); + CANT_REACH(); return 0; } } @@ -510,7 +510,7 @@ nstr_promote(int valtype) valtype = NSC_STRING; break; default: - CANT_HAPPEN("bad VALTYPE"); + CANT_REACH(); valtype = NSC_NOTYPE; } return valtype; @@ -556,7 +556,7 @@ nstr_coerce_val(struct valstr *val, nsc_type to, char *str) case NSC_LONG: return cond_type_mismatch(str); default: - CANT_HAPPEN("bad TO argument"); + CANT_REACH(); to = from; } } @@ -590,7 +590,7 @@ nstr_exec_val(struct valstr *val, natid cnum, void *ptr, nsc_type want) switch (val->val_cat) { default: - CANT_HAPPEN("Bad VAL category"); + CANT_REACH(); /* fall through */ case NSC_VAL: valtype = val->val_type; @@ -652,7 +652,7 @@ nstr_exec_val(struct valstr *val, natid cnum, void *ptr, nsc_type want) valtype = NSC_TYPEID; break; default: - CANT_HAPPEN("Bad VAL type"); + CANT_REACH(); val->val_as.lng = 0; } val->val_cat = NSC_VAL; @@ -666,7 +666,7 @@ nstr_exec_val(struct valstr *val, natid cnum, void *ptr, nsc_type want) val->val_as.dbl = val->val_as.lng; } } else if (want == NSC_STRING) - CANT_HAPPEN("unimplemented WANT"); /* FIXME */ + CANT_REACH(); /* FIXME implement */ if (CANT_HAPPEN(valtype != want && want != NSC_NOTYPE)) { valtype = want; @@ -676,7 +676,7 @@ nstr_exec_val(struct valstr *val, natid cnum, void *ptr, nsc_type want) case NSC_DOUBLE: val->val_as.dbl = 0.0; break; case NSC_STRING: val->val_as.str.base = NULL; break; default: - CANT_HAPPEN("bad WANT argument"); + CANT_REACH(); } } diff --git a/src/lib/subs/nxtitem.c b/src/lib/subs/nxtitem.c index 384e0b05..ad347d94 100644 --- a/src/lib/subs/nxtitem.c +++ b/src/lib/subs/nxtitem.c @@ -96,7 +96,7 @@ nxtitem(struct nstr_item *np, void *ptr) selected = 0; break; default: - CANT_HAPPEN("bad np->sel"); + CANT_REACH(); return 0; } if (selected && np->ncond) { diff --git a/src/lib/subs/trdsub.c b/src/lib/subs/trdsub.c index f5f3547a..0e3718d3 100644 --- a/src/lib/subs/trdsub.c +++ b/src/lib/subs/trdsub.c @@ -69,7 +69,7 @@ trade_check_item_ok(union trdgenstr *tgp) return check_ship_ok(&tgp->shp); if (tgp->gen.ef_type == EF_NUKE) return check_nuke_ok(&tgp->nuk); - CANT_HAPPEN("Bad EF_TYPE"); + CANT_REACH(); pr("Trade lot went bad!\n"); return 0; } diff --git a/src/lib/update/nxtitemp.c b/src/lib/update/nxtitemp.c index af2c5fd1..cce620da 100644 --- a/src/lib/update/nxtitemp.c +++ b/src/lib/update/nxtitemp.c @@ -97,7 +97,7 @@ nxtitemp(struct nstr_item *np) selected = 0; break; default: - CANT_HAPPEN("bad np->sel"); + CANT_REACH(); return 0; } if (selected && np->ncond) { diff --git a/src/server/main.c b/src/server/main.c index fdc48032..aa3c407c 100644 --- a/src/server/main.c +++ b/src/server/main.c @@ -271,7 +271,7 @@ main(int argc, char **argv) empth_exit(); - CANT_HAPPEN("main thread terminated"); + CANT_REACH(); finish_server(); return EXIT_SUCCESS; }