[mythtv-commits] mythtv commit: r25080 by mdean

mythtv at cvs.mythtv.org mythtv at cvs.mythtv.org
Thu Jun 10 20:41:00 UTC 2010


      Author: mdean
        Date: 2010-06-10 20:41:00 +0000 (Thu, 10 Jun 2010)
New Revision: 25080
   Changeset: http://svn.mythtv.org/trac/changeset/25080

Modified:

   trunk/mythtv/programs/mythbackend/mythxml.cpp
   trunk/mythtv/programs/mythbackend/mythxml.h

Log:

Fix a segfault in MythXML's GetExpiring method caused by a NULL AutoExpire pointer and re-enable the use of the Scheduler in MythXML.

Since http://svn.mythtv.org/trac/changeset/24030 , the global MediaServer g_pUPnp is created early in backend startup to allow its use for mythbackend settings.  This means g_pUPnp is instantiated before the global AutoExpire expirer and the global Scheduler sched.  The MediaServer creates the MythXML object referenced by UPnp::m_pHttpServer, which stores a copy of the global sched and expirer pointers' current values into m_pSched and m_pExpirer, respectively.  Since the global objects have not yet been created, m_pSched and m_pExpirer are always NULL.

This change modifies MythXML to use the global pointers directly.  Although all uses of the scheduler were wrapped in a NULL check and, therefore, didn't cause segfaults, this change re-enables receiving scheduler-related information from MythXML.  Use of the AutoExpire pointer, however, wasn't wrapped in a NULL check and would always result in a segfault.  A NULL check is added to prevent a segfault that would occur even with the global pointers for those users who run mythbackend with --noautoexpire (when there is no AutoExpire object).  Finally, the m_pEncoders field (which was initialized to the value of the global tvList--which is also NULL at this point) was removed from MythXML since it was no longer used.

Thanks to Raymond Wagner for finding the segfault.





More information about the mythtv-commits mailing list