From eede83dea12b7dd578b0c1045fd98c568029825c Mon Sep 17 00:00:00 2001 From: Bill Currie <bill@taniwha.org> Date: Sat, 12 Feb 2011 22:58:50 +0900 Subject: [PATCH] Avoid crashing when a null class pointer is found. --- tools/qfcc/source/modules.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/tools/qfcc/source/modules.c b/tools/qfcc/source/modules.c index 06ae085ab..639ddeecc 100644 --- a/tools/qfcc/source/modules.c +++ b/tools/qfcc/source/modules.c @@ -120,10 +120,15 @@ dump_protocol_list (progs_t *pr, pr_protocol_list_t *list) static void dump_class (progs_t *pr, pr_class_t *class) { - pr_class_t *meta = &G_STRUCT (pr, pr_class_t, class->class_pointer); + pr_class_t *meta; const char *class_name = "<invalid string>"; const char *super_class_name = "<invalid string>"; + if (!class) { + printf (" (nil)\n"); + return; + } + meta = &G_STRUCT (pr, pr_class_t, class->class_pointer); if (PR_StringValid (pr, class->name)) class_name = PR_GetString (pr, class->name); if (class->super_class) { @@ -205,7 +210,9 @@ dump_modules (progs_t *pr) if (PR_StringValid (pr, def->s_name)) name = PR_GetString (pr, def->s_name); - if (strcmp (name, "_OBJ_MODULE") == 0) + if (strcmp (name, "_OBJ_MODULE") == 0) { + printf ("module @ %x\n", def->ofs); dump_module (pr, &G_STRUCT (pr, pr_module_t, def->ofs)); + } } }