From 98b4f1fce2714f25c4dc78d258b97e4c05d9d2f6 Mon Sep 17 00:00:00 2001 From: rubidium Date: Thu, 18 Jun 2009 09:47:06 +0000 Subject: (svn r16590) -Fix [FS#2967]: don't crash when tars/newgrfs are removed, just tell the file could be opened/found. --- src/fileio.cpp | 2 +- src/newgrf.cpp | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/fileio.cpp b/src/fileio.cpp index 7abf732fb..bcccb3419 100644 --- a/src/fileio.cpp +++ b/src/fileio.cpp @@ -337,7 +337,7 @@ FILE *FioFOpenFileSp(const char *filename, const char *mode, Searchpath sp, Subd FILE *FioFOpenFileTar(TarFileListEntry *entry, size_t *filesize) { FILE *f = fopen(entry->tar_filename, "rb"); - assert(f != NULL); + if (f == NULL) return f; fseek(f, entry->position, SEEK_SET); if (filesize != NULL) *filesize = entry->size; diff --git a/src/newgrf.cpp b/src/newgrf.cpp index c226d295e..1426208e7 100644 --- a/src/newgrf.cpp +++ b/src/newgrf.cpp @@ -6212,8 +6212,11 @@ void LoadNewGRF(uint load_index, uint file_index) if (c->status == GCS_DISABLED || c->status == GCS_NOT_FOUND) continue; if (stage > GLS_INIT && HasBit(c->flags, GCF_INIT_ONLY)) continue; - /* @todo usererror() */ - if (!FioCheckFileExists(c->filename)) usererror("NewGRF file is missing '%s'", c->filename); + if (!FioCheckFileExists(c->filename)) { + DEBUG(grf, 0, "NewGRF file is missing '%s'; disabling", c->filename); + c->status = GCS_NOT_FOUND; + continue; + } if (stage == GLS_LABELSCAN) InitNewGRFFile(c, _cur_spriteid); LoadNewGRFFile(c, slot++, stage); -- cgit v1.2.3-70-g09d2