diff --git a/sp/src/responserules/runtime/response_system.cpp b/sp/src/responserules/runtime/response_system.cpp index d294316d..653c5cbf 100644 --- a/sp/src/responserules/runtime/response_system.cpp +++ b/sp/src/responserules/runtime/response_system.cpp @@ -1985,7 +1985,14 @@ void CResponseSystem::ParseResponse( void ) while ( 1 ) { +#ifdef MAPBASE + if ( !ParseToken() || !Q_stricmp( token, "}" ) ) + { + break; + } +#else ParseToken(); +#endif unsigned int hash = RR_HASH( token ); @@ -2048,7 +2055,14 @@ int CResponseSystem::ParseOneCriterion( const char *criterionName ) while ( TokenWaiting() || !gotbody ) { +#ifdef MAPBASE + if ( !ParseToken() ) + { + break; + } +#else ParseToken(); +#endif // Oops, part of next definition if( IsRootCommand() ) diff --git a/sp/src/responserules/runtime/response_types_internal.cpp b/sp/src/responserules/runtime/response_types_internal.cpp index 098801c4..873f8759 100644 --- a/sp/src/responserules/runtime/response_types_internal.cpp +++ b/sp/src/responserules/runtime/response_types_internal.cpp @@ -8,6 +8,7 @@ #include "rrbase.h" #ifdef MAPBASE #include "convar.h" +#include "mapbase_matchers_base.h" #endif // memdbgon must be the last include file in a .cpp file!!! @@ -117,7 +118,11 @@ static inline bool CanBucketBySubject( const char * RESTRICT pszSubject ) { return pszSubject && ( ( pszSubject[0] >= 'A' && pszSubject[0] <= 'Z' ) || - ( pszSubject[0] >= 'a' && pszSubject[0] <= 'z' ) ); + ( pszSubject[0] >= 'a' && pszSubject[0] <= 'z' ) ) +#ifdef MAPBASE + && !Matcher_ContainsWildcard( pszSubject ) +#endif + ; } ResponseRulePartition::tRuleDict &ResponseRulePartition::GetDictForRule( CResponseSystem *pSystem, Rule *pRule )