It's not clear to me what this code is trying to accomplish, but memcmping a
struct is of course always dangerous and never a good idea. In this case, it's
actually memcmping an inhereted class which is even worse, as the vtable
pointer gets involved, causing the memcmp to seemingly never succeed.
It's not clear though whether this memcmp might be masking some other buggy
codepath, so I haven't added a KI yet.
Anyone understand the CFogController? Do certain maps make use of this?
Patch to use correct comparisons:
--- src/dlls/fogcontroller.cpp 26 Aug 2006 21:24:29 -0000 1.2
+++ src/dlls/fogcontroller.cpp 4 Sep 2006 18:43:46 -0000
@@ -381,8 +381,22 @@
{
if ( CFogController::s_pFogController )
{
- if ( Q_memcmp( &fog, CFogController::s_pFogController,
sizeof(fog) ))
- {
+ if (
+ fog.enable.Get() !=
CFogController::s_pFogController->m_fog.enable.Get()
+ || fog.blend.Get() !=
CFogController::s_pFogController->m_fog.blend.Get()
+ || fog.dirPrimary.Get() !=
CFogController::s_pFogController->m_fog.dirPrimary.Get()
+ || fog.colorPrimary.Get() !=
CFogController::s_pFogController->m_fog.colorPrimary.Get()
+ || fog.colorSecondary.Get() !=
CFogController::s_pFogController->m_fog.colorSecondary.Get()
+ || fog.start.Get() !=
CFogController::s_pFogController->m_fog.start.Get()
+ || fog.end.Get() !=
CFogController::s_pFogController->m_fog.end.Get()
+ || fog.farz.Get() !=
CFogController::s_pFogController->m_fog.farz.Get()
+ || fog.colorPrimaryLerpTo.Get() !=
CFogController::s_pFogController->m_fog.colorPrimaryLerpTo.Get()
+ || fog.colorSecondaryLerpTo.Get() !=
CFogController::s_pFogController->m_fog.colorSecondaryLerpTo.Get()
+ || fog.startLerpTo.Get() !=
CFogController::s_pFogController->m_fog.startLerpTo.Get()
+ || fog.endLerpTo.Get() !=
CFogController::s_pFogController->m_fog.endLerpTo.Get()
+ || fog.lerptime.Get() !=
CFogController::s_pFogController->m_fog.lerptime.Get()
+ || fog.duration.Get() !=
CFogController::s_pFogController->m_fog.duration.Get()
+ ) {
fog = CFogController::s_pFogController->m_fog;
return true;
}
_______________________________________________
To unsubscribe, edit your list preferences, or view the list archives, please
visit:
http://list.valvesoftware.com/mailman/listinfo/hlcoders