]> git.pond.sub.org Git - empserver/commitdiff
(CANT_REACH): New. Use it instead of CANT_HAPPEN() where possible.
authorMarkus Armbruster <armbru@pond.sub.org>
Mon, 17 Apr 2006 17:36:07 +0000 (17:36 +0000)
committerMarkus Armbruster <armbru@pond.sub.org>
Mon, 17 Apr 2006 17:36:07 +0000 (17:36 +0000)
(oops): Cope with NULL argument passed by CANT_REACH().

13 files changed:
include/misc.h
src/lib/commands/buil.c
src/lib/commands/load.c
src/lib/commands/prod.c
src/lib/commands/xdump.c
src/lib/common/log.c
src/lib/common/maps.c
src/lib/gen/service.c
src/lib/subs/nstr.c
src/lib/subs/nxtitem.c
src/lib/subs/trdsub.c
src/lib/update/nxtitemp.c
src/server/main.c

index 8208c258bbbad553a7845e899cfc08354b4014ee..d476f4d1b02a4188e8d747f0be5ccb56e11537e9 100644 (file)
@@ -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(...)) <recovery code>;
  */
 #define CANT_HAPPEN(expr) ((expr) ? oops(#expr, __FILE__, __LINE__) : 0)
+
+/*
+ * Report internal error.
+ * Usage: CANT_REACH(); <recovery code>;
+ */
+#define CANT_REACH() (void)oops(NULL, __FILE__, __LINE__)
+
 extern int oops(char *, char *, int);
 
        /* return codes from command routines */
index 2433a86f33b13246a72b0f99cf3d9774933b7660..d5e8d584843fcaf32f45ac7daf76e54a97444213 100644 (file)
@@ -273,7 +273,7 @@ buil(void)
                built = build_plane(&sect, pp, sect.sct_item, tlev);
                break;
            default:
-               CANT_HAPPEN("Bad WHAT");
+               CANT_REACH();
                return RET_FAIL;
            }
            if (built) {
index 758f4ae28fabaa7717bf4e022331b46d0884c07e..6f0cc235c7f39db504328e3b98213d7d7656cecf 100644 (file)
@@ -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";
     }
 
index 3469ebd8f51f9c440d96c545460eccbad7b0fd04..8497cb0b9c84a91ed621aef0fbbb86e2db754753 100644 (file)
@@ -296,7 +296,7 @@ prod(void)
                pr(" %4.0f ", real);
                break;
            default:
-               CANT_HAPPEN("bad TYPE");
+               CANT_REACH();
                pr("  ??? ");
                break;
            }
index 39f78e06c3134b84c2b2b8647bee769ce76d5acd..fba22a97889935dffdcdd3cc51467c042246dd38 100644 (file)
@@ -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 " ";
index 78f2e0dfc638c4544cbd9183c57d4e21fb609321..17e2cdf292d9cd4cce8ddae441733436be1a97d4 100644 (file)
@@ -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;
 }
index 7c43be56ed50da8440ed426452430e16502f98ba..90a21bd95e719fe9c7b0c0edbd53494593a8f1ef 100644 (file)
@@ -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':
index 4600347a920a75ab1f20ef2e2e5d8c6e90745227..11dfd5c072e5c14221010eae15f0fa945b830f53 100644 (file)
@@ -204,7 +204,7 @@ service_main(DWORD argc, LPTSTR *argv)
 
     empth_exit();
 
-    CANT_HAPPEN("main thread terminated");
+    CANT_REACH();
     finish_server();
 }
 
index 64e282ec833748131f2779102c24af56e03269e0..656398eb0d4c396f80b937b9621e4f598ff3c097 100644 (file)
@@ -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();
        }
     }
 
index 384e0b05127c6735d0fa376afd80751256337b9f..ad347d9454583ac91cdf6bb40151970158ac817a 100644 (file)
@@ -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) {
index f5f3547aed9f0a799d6968d4f62af5b3cb1041fe..0e3718d372b3da702d4d961204a0afab16a6ce82 100644 (file)
@@ -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;
 }
index af2c5fd19b7642a9aa4ed0d5274799f02c58eca5..cce620dae18f67777f7e17d087d505298fb99fe6 100644 (file)
@@ -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) {
index fdc4803207797ec873341e395e5433a996d57511..aa3c407cca02efa2650c417c8f4a366d6a287964 100644 (file)
@@ -271,7 +271,7 @@ main(int argc, char **argv)
 
     empth_exit();
 
-    CANT_HAPPEN("main thread terminated");
+    CANT_REACH();
     finish_server();
     return EXIT_SUCCESS;
 }