c++/2053: Static cast from parent to children is working but shouldn't

philippeb@corel.com philippeb@corel.com
Wed Feb 21 13:56:00 GMT 2001


>Number:         2053
>Category:       c++
>Synopsis:       Static cast from parent to children is working but shouldn't
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Wed Feb 21 13:56:02 PST 2001
>Closed-Date:
>Last-Modified:
>Originator:     gcc
>Release:        2.95.3 20010101
>Organization:
>Environment:
Linux 2.4.0 i686
>Description:
The compiler is not preventing a cast from a parent pointer 
to a children pointer unless inheritance is virtual.
>How-To-Repeat:
struct A {}; struct B : A {};
A * p1 = new A;
B * p2 = static_cast<B *>(p1);
>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:
----gnatsweb-attachment----
Content-Type: text/x-c++src; name="casts.cpp"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="casts.cpp"

I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dHlwZWluZm8+CiNpbmNsdWRlIDxtYWxsb2Mu
aD4KCnN0cnVjdCBBCnsKICB2aXJ0dWFsIHZvaWQgbmFtZSgpIHsgY291dCA8PCAiQSI7IH0KfTsK
CnN0cnVjdCBCIDogQQp7CiAgaW50IG9bMTAwMF07CiAgaW50IGE7CiAgdmlydHVhbCB2b2lkIG5h
bWUoKSB7IGNvdXQgPDwgIkIiOyB9Cn07Cgp2b2lkICogb3BlcmF0b3IgbmV3IChzaXplX3QgcykK
ewogIHZvaWQgKiBwID0gbWFsbG9jKHMpOwogIGNvdXQgPDwgIioqKiBNZW1vcnkgQWxsb2NhdGlv
biAqKioiIDw8IGVuZGw7CiAgY291dCA8PCAiU3RhcnQ6ICAgICAgIiA8PCBwIDw8IGVuZGw7CiAg
Y291dCA8PCAiRW5kOiAgICAgICAgIiA8PCAodm9pZCAqKSAoKGNoYXIgKikgcCArIHMpIDw8IGVu
ZGw7CiAgcmV0dXJuIHA7Cn0KCmludCBtYWluKCkKewogIHVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgog
IEEgKiBwMiA9IG5ldyBBOwogIEIgKiBwMyA9IHN0YXRpY19jYXN0PEIgKj4ocDIpOwoKICBjb3V0
IDw8ICIqKiogQSAqKioiIDw8IGVuZGw7CiAgY291dCA8PCAiU3RhcnQ6ICAgICAgIiA8PCBwMiA8
PCBlbmRsOwogIGNvdXQgPDwgIkVuZDogICAgICAgICIgPDwgKHZvaWQgKikgKChjaGFyICopIHAy
ICsgc2l6ZW9mKCogcDIpKSA8PCBlbmRsOwoKICBjb3V0IDw8ICIqKiogQiAqKioiIDw8IGVuZGw7
CiAgY291dCA8PCAiU3RhcnQ6ICAgICAgIiA8PCBwMyA8PCBlbmRsOwogIGNvdXQgPDwgIkVuZDog
ICAgICAgICIgPDwgKHZvaWQgKikgKChjaGFyICopIHAzICsgc2l6ZW9mKCogcDMpKSA8PCBlbmRs
OwoKICBjb3V0IDw8ICJNZW1iZXIgJ2EnOiAiIDw8ICYgcDMtPmEgPDwgZW5kbDsKCiAgY291dCA8
PCAiTmFtZSA9ICAgICAgICAgICAiOyBwMy0+bmFtZSgpOyBjb3V0IDw8IGVuZGw7CiAgY291dCA8
PCAiVHlwZSBJbmZvIE5hbWUgPSAiIDw8IHR5cGVpZCgqIHAzKS5uYW1lKCkgPDwgZW5kbDsKICBw
My0+YSA9IDE7Cn0K



More information about the Gcc-bugs mailing list