Opened 19 years ago
Closed 19 years ago
Last modified 17 years ago
#2725 closed defect (invalid)
dynamic_cast can return NULL, must test — at Version 2
Reported by: | Nigel | Owned by: | Nigel |
---|---|---|---|
Priority: | minor | Milestone: | unknown |
Component: | mythtv | Version: | 0.20 |
Severity: | medium | Keywords: | |
Cc: | Ticket locked: | yes |
Description (last modified by )
There are a few places in the code where the result of dynamic_cast isn't tested before it is used. Sadly, in some cases, it can return NULL, which causes a bus error or SEGV.
One particuar problem is in the keypress event processing. Causes a crash on OS X binaries built on 10.4 (gcc4), but running on 10.3. It is an old problem, usually caused by incorrectly compiling with -fno-rtti: http://www.gossamer-threads.com/lists/mythtv/dev/72988#72988
Some documents (e.g. http://www.cplusplus.com/doc/tutorial/typecasting.html) say that dynamic_cast ing a base class to a subclass is illegal. QKeyEvent is a base class of QEvent, so if I believe this, it is the problem here.
Those casts in the event handler are absolutely guaranteed to succeed there, unless something is _seriously_ wrong with the compiler or Qt. The type has already been checked by the case statement, and those are valid uses of dynamic_cast (though not really necessary).