Resolving of extern declared symbols in deep inherits broken.
Imported from http://bugzilla.roxen.com/bugzilla/show_bug.cgi?id=6063
Reported by @grubba
From the Pike mailing list (12549):
From: "[ks_c_5601-1987] άàäáæ" <zenothing@hotmail.com>
Resent-From: pike@roxen.com
To: "pike@roxen.com" <pike@roxen.com>
Date: Mon, 29 Aug 2011 20:08:39 +0800
Resent-Date: Mon, 29 Aug 2011 14:08:47 +0200 (CEST)
Subject: bug of "extern"
Parts/Attachments:
1 Shown 41 lines Text (charset: ks_c_5601-1987)
2 OK 24 lines Text (charset: ks_c_5601-1987)
----------------------------------------
[ The following text is in the "ks_c_5601-1987" character set. ]
[ Your display is set for the "iso-8859-1" character set. ]
[ Some characters may be displayed incorrectly. ]
[peterpan@brain ~]$cat deepmixin.pike
class A{
extern string s;
extern string t;
void p(){
write("%O %O\n",s,t);
}
}
class B{
}
class C{
inherit A;
inherit B;
string s;
string t;
void pp()
{
s="a";
t="b";
p();
}
}
class D{
inherit C;
}
void main()
{
C c=C();
c->pp();
D d=D();
d->pp();
}
[peterpan@brain ~]$pike deepmixin.pike
"a" "b"
0 0
[peterpan@brain ~]$pike --version
Pike v7.8 release 352 Copyright ¢Æ 1994-2009 Link¢Æping University
Pike comes with ABSOLUTELY NO WARRANTY; This is free software and you are
welcome to redistribute it under certain conditions; read the files
COPYING and COPYRIGHT in the Pike distribution for more details.