[Haiku-commits] r31013 - haiku/trunk/src/add-ons/media/media-add-ons/usb_webcam

Michael Lotz mmlr at mlotz.ch
Fri Jun 12 18:25:39 CEST 2009


> mmlr at mail.berlios.de schrieb:
> > Need to stop the roster before deleting it. Should fix bug #4017.
> 
> If this is something that any client of BUSBRoster has to do before 
> deleting a roster instance, this may as well be called in the roster 
> destructor itself, no? Or is Stop() a virtual method and BUSBRoster 
> can 
> be subclassed?

In principle yes, and it does, but it cannot work. When the BUSBRoster 
destructor is called, it is called with "this" being the BUSBRoster 
base class only, and not the subclassed roster anymore. At this point 
the pure virtual functions that were provided by the subclass aren't 
available anymore, hence the pure virtual function call in the first 
place. It basically means that you need to call Stop() while the object 
is still intact and the subclass vtable is in place. Another way of 
"solving" it would be to check if the function call is still available 
and then just not call it if not, but I don't know off hand how to do 
that.

Regards
Michael



More information about the Haiku-commits mailing list