From 44fbf6cd305da65a0e2f753f24fde8f421bf8226 Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Mon, 14 Jan 2013 23:18:11 +0100 Subject: [PATCH] prnatid: Recover from getnatp() failure 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 --- src/lib/subs/natsub.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/lib/subs/natsub.c b/src/lib/subs/natsub.c index 57eaab957..9e2616138 100644 --- a/src/lib/subs/natsub.c +++ b/src/lib/subs/natsub.c @@ -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); } -- 2.43.0