diff -r 9d662430f42b -r 275107f9ca95 core/systems/ExtensionSys.cpp --- a/core/systems/ExtensionSys.cpp Tue Jul 10 08:21:24 2007 +0000 +++ b/core/systems/ExtensionSys.cpp Thu Jul 12 02:57:43 2007 +0000 @@ -529,13 +529,19 @@ n_iter++) { natives = (*n_iter); + uint32_t idx; unsigned int i=0; while (natives[i].func != NULL && natives[i].name != NULL) { - if (pContext->BindNative(&natives[i++]) == SP_ERROR_NONE) + if (pContext->BindNative(&natives[i]) == SP_ERROR_NONE) { - set = true; + pContext->FindNativeByName(natives[i].name, &idx); + if (!(pContext->GetContext()->natives[idx].flags & SP_NTVFLAG_OPTIONAL)) + { + set = true; + } } + i++; } } if (set && (pExt->m_Plugins.find(pPlugin) == pExt->m_Plugins.end()))