]> git.pond.sub.org Git - empserver/commitdiff
prnatid: Recover from getnatp() failure
authorMarkus Armbruster <armbru@pond.sub.org>
Mon, 14 Jan 2013 22:18:11 +0000 (23:18 +0100)
committerMarkus Armbruster <armbru@pond.sub.org>
Thu, 6 Jun 2013 17:52:26 +0000 (19:52 +0200)
cname() calls getnatp(), and returns a null pointer when it fails.
Some systems (GNU, Windows) deal gracefully with printing null
strings, others crash.

Because we keep table EF_NATION entirely in memory, getnatp() should
fail only on invalid country number.

Rewrite prnatid() to catch this error and recover.

Signed-off-by: Markus Armbruster <armbru@pond.sub.org>
src/lib/subs/natsub.c

index 57eaab9572daa68087727d9e401ef9c73aa7608c..9e261613872934c808328b0f54b6f25e002d5452 100644 (file)
@@ -82,5 +82,9 @@ prnat(struct natstr *np)
 char *
 prnatid(natid cnum)
 {
-    return prbuf("%s (#%d)", cname(cnum), cnum);
+    struct natstr *np = getnatp(cnum);
+
+    if (CANT_HAPPEN(!np))
+       return prbuf("%d (#%d)", cnum, cnum);
+    return prnat(np);
 }