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/
From: Holger Kremss
Date: 000207
Short: Bug in virtual inherits
Type: Bug
State: Done - fixed in 3.2.8-dev.186
See also: b-000411-1

Problem was that the compiler used the first inherited function it
could find. With normal inherits this is the topmost one, with virtual
inherits this is not guaranteed.


Description:
Hi Lars.

Also hier in /tmp/mateese/* liegen 4 Files:

a.c    - mit nem create() und einer Variable 'foo'
b.c    - nur mit einem create()
c.c    - inheritet a.c virtuell und b.c normal und ruft in beiden
         ::create() auf
test.c - das inheritet nur c.c und macht ::create()

Normalerweise sollte jetzt in jedem File das create() aufgerufen
werden. Wenn man test.c laedt, dann kommen da aber nur die printfs von
test.s und a.c. die restlichen create() werden nicht mehr aufgerufen.

Wenn man das virtual inherit aus c.c rausnimmt, funktioniert es
perfekt.

Wenn man die Variable aus a.c rausnimmt, funktioniert es auch perfekt.

Mit Driver 327 funktionierte das ganze noch. Mit 328-164 kommen die
angesprochenen Fehler. 

Wenn man nur c.c laedt, dann funktioniert es auch. Aber beim Laden
von test.c geht es nicht. Nur zur Information, das test.c ist ein
beliebiger Raum bei uns, c.c ist die room-Standardklasse. a und b
stehen fuer thing und container. Daher kommen die Bugs schon beim
hochfahren des MUDs, da alle moeglichen Variablen mangels create()
der anderen Subklassen nicht initialisiert werden.

Ich hoffe, das hilft Dir weiter. Die Files hab ich bis aufs 
notwendigstes zusammengeschrumpft.

Ciao!

Holger

--- a.c ---
mixed foo;

void create()
{
	printf("File 'a.c' create()\n");
}

--- b.c ---
create()
{
	printf("File 'b.c' create()\n");
}

--- c.c ---
virtual inherit "tmp/mateese/a";
inherit "tmp/mateese/b";

create()
{
	printf("File 'c.c' create()\n");
	a::create();
	b::create();
}

--- test.c ---
inherit "/tmp/mateese/c";

create()
{
	printf("File 'test.c' create()\n");
	::create();
}