Short: Indirect virtual inherits clobber global variables
Date: Tue, 18 Jul 2000 16:55:13 +0200 (MEST)
From: Erzmagier des Wunderlandes <mud@hurrikap.rz.uni-leipzig.de>
Type: Bug
State: Not reproducible with 3.2.8-dev.217+

Hallo Mateese!

So, mal wieder ein Bug von mir ;o) diesmal ist die Konstellation etwas
komplexer, es ist ein 'virtual inherit', 'replace_program' und eine
globale Variable vor einem Inherit noetig.

Aufgetreten ist das beim 3.2.7, und ich habe wie immer keinen der
Dev-Driver parat. Ich hab das ganze mal auf drei Files reduziert:

---- a.c ----
int fasel;

create() { fasel=1; }
blah() { return fasel; }

---- c.c ----
virtual inherit "/players/fiona/a";

create() {
  if (file_name()=="/players/fiona/d")
    replace_program("/players/fiona/a");
  ::create();
}

---- d.c ----
string menno;
inherit "/players/fiona/c";

create() { ::create() }


Ein call_other() auf "/players/fiona/d"->blah() liefert dann Null. Will
sagen: alle globalen Variablen, die waehrend des create()s erstellt
werden, werden zu Null.

Nicht auftreten tut der Fehler, wenn man menno nach dem inherit definiert.

*knuddels*

   Fiona @ Wunderland

