ldmud-3.2.9/doc/
ldmud-3.2.9/doc/efun/
ldmud-3.2.9/mud/
ldmud-3.2.9/mud/heaven7/
ldmud-3.2.9/mud/heaven7/lib/
ldmud-3.2.9/mud/lp-245/
ldmud-3.2.9/mud/lp-245/banish/
ldmud-3.2.9/mud/lp-245/doc/
ldmud-3.2.9/mud/lp-245/doc/examples/
ldmud-3.2.9/mud/lp-245/doc/sefun/
ldmud-3.2.9/mud/lp-245/log/
ldmud-3.2.9/mud/lp-245/obj/Go/
ldmud-3.2.9/mud/lp-245/players/lars/
ldmud-3.2.9/mud/lp-245/room/death/
ldmud-3.2.9/mud/lp-245/room/maze1/
ldmud-3.2.9/mud/lp-245/room/sub/
ldmud-3.2.9/mud/lp-245/secure/
ldmud-3.2.9/mud/morgengrauen/
ldmud-3.2.9/mud/morgengrauen/lib/
ldmud-3.2.9/mud/sticklib/
ldmud-3.2.9/mud/sticklib/src/
ldmud-3.2.9/mudlib/uni-crasher/
ldmud-3.2.9/pkg/
ldmud-3.2.9/pkg/debugger/
ldmud-3.2.9/pkg/diff/
ldmud-3.2.9/pkg/misc/
ldmud-3.2.9/src/autoconf/
ldmud-3.2.9/src/bugs/
ldmud-3.2.9/src/bugs/MudCompress/
ldmud-3.2.9/src/bugs/b-020916-files/
ldmud-3.2.9/src/bugs/doomdark/
ldmud-3.2.9/src/bugs/ferrycode/ferry/
ldmud-3.2.9/src/bugs/ferrycode/obj/
ldmud-3.2.9/src/bugs/psql/
ldmud-3.2.9/src/done/
ldmud-3.2.9/src/done/order_alist/
ldmud-3.2.9/src/done/order_alist/obj/
ldmud-3.2.9/src/done/order_alist/room/
ldmud-3.2.9/src/gcc/
ldmud-3.2.9/src/gcc/2.7.0/
ldmud-3.2.9/src/gcc/2.7.1/
ldmud-3.2.9/src/hosts/
ldmud-3.2.9/src/hosts/GnuWin32/
ldmud-3.2.9/src/hosts/amiga/NetIncl/
ldmud-3.2.9/src/hosts/amiga/NetIncl/netinet/
ldmud-3.2.9/src/hosts/amiga/NetIncl/sys/
ldmud-3.2.9/src/hosts/i386/
ldmud-3.2.9/src/hosts/msdos/byacc/
ldmud-3.2.9/src/hosts/msdos/doc/
ldmud-3.2.9/src/hosts/os2/
ldmud-3.2.9/src/hosts/win32/
ldmud-3.2.9/src/util/
ldmud-3.2.9/src/util/erq/
ldmud-3.2.9/src/util/indent/hosts/next/
ldmud-3.2.9/src/util/xerq/
ldmud-3.2.9/src/util/xerq/lpc/
ldmud-3.2.9/src/util/xerq/lpc/www/
Short: Evermore crashes on not-found includes
Date: Sat, 13 May 2000 14:17:05 +0200
From: Lothar Ludwig <lludwig@informatik.uni-tuebingen.de>
Type: Bug
State: Done - fixed in 3.2.8-dev.213


in Evermore schmiert mir der Driver ab, wenn ich
mit #include "../xxx.h"  ein file include, das nicht existiert. 
Plattform: Solaris2.7, Compat driver, die Settings hast du ja da.
< > -includes zeigen dieses Problem nicht.


Hier die Ausschnitte aus dem Master:


set_driver_hook(H_INCLUDE_DIRS, #'get_include_dir );
private string *include_dirs =         ({ "sys/", "include/", "~/" });

string get_include_dir(string included, string includer) {
  string path;

  for (int i = sizeof(include_dirs); i; i--) {
    path = include_dirs[<i] + included;

    if (path[0] == '~') {
      // included by a file with an owner?
      if ((includer[0..7] == "players/") || (includer[0..7] == "domains/")) {
        path[0..0] = implode(explode(includer, "/")[0..1], "/");
      }
        else {
        // included by a mudlib file
          continue;
        }
    }
    // is this file existent?
    if (file_size("/" + path) >= 0) {
      // we return the file
      return path;
    }
  }
  return null;
}



Der Fehler tritt zum Beispiel auf, wenn ich unter
/players/fangorn/work/bla.c ein #include "../blubber.h" mache, wenn das 
blubber.h dort nicht existiert. Dann dumped der driver.

-- Analysis --

Create a file /players/fangorn/work/bla.c containing just the include
statement, and let it load e.g. from the town square. On BeOS you'll get the
error message 'Cannot #include '../blubber.h' line 1 near <garbage>'.

The lex_error_context() was not guarded against end-of-buffer or -file
conditions here, which might have causes the crash on Solaris.

Other than that, the problem was not reproducible.