You are right, in all cases we know of, the code does the correct checks
:-).
But I vaguely remember fixing bugs where the code did not properly check
for SP_TYPE.
It's just that there might be bad code somewhere, and then a NULL
exception is that much easier to kill. The performance hit is not an issue I think, and is something that is easy to measure.
I'll add that as you suggested, nevermind ;) .
Actually, this doesn't work.
SPItem *item=SP_ITEM(desktop->currentLayer()->appendChildRepr(this->repr));
expanded: SPItem *item=((dynamic_cast<const
SPItem*>((SPObject*)desktop->currentLayer()->appendChildRepr(this->repr)) != 0) ? (SPItem*)desktop->currentLayer()->appendChildRepr(this->repr) : 0)
This will call appendChildRepr twice and finally fail in an assertion, because the repr got modified.
Seems like finding a working solution isn't that easy ;) .
Regards,
Markus