Ticket UUID: | 9d61624b3deb9fc676d69a59e0213e61cf8e5fb1 | |||
Title: | empty superclass slot is not always equivalent to oo::object | |||
Type: | Bug | Version: | 8.6.0 | |
Submitter: | anonymous | Created on: | 2013-07-07 22:17:10 | |
Subsystem: | 35. TclOO Package | Assigned To: | dkf | |
Priority: | 5 Medium | Severity: | Critical | |
Status: | Closed | Last Modified: | 2013-08-02 15:00:08 | |
Resolution: | Fixed | Closed By: | dkf | |
Closed on: | 2013-08-02 15:00:08 | |||
Description: |
If you do not define a superclass for $class, then oo::object will be the superclass of $class. This is explained in the documentation (of oo::define) as "an empty parent class is equivalent to oo::object". However, if you do oo::define $class { superclass }, then the superclass slot is made empty, but does not again become equivalent to oo::object. A crash can be caused. Example: % oo::class create fruit { method eat {} { puts "yummy!" } } ::fruit % set f [fruit new] ::oo::Obj12 % info object class $f oo::object 1 % info class superclasses fruit ::oo::object % oo::define fruit { superclass } % info class superclasses fruit % info object class $f oo::object 0 % info object isa object $f 1 % $f destroy impossible to invoke method "destroy": no defined method or unknown method % info class call fruit destroy cannot construct any call chain % $f Segmentation fault (core dumped) -Marcel van der Goot | |||
User Comments: |
dkf added on 2013-08-02 14:37:40:
Confirmed interactively. Ouch. |
