Доступ к свойству плагина NPAPI из Javascript
Возникли проблемы при попытке получить значение свойства через Javascript с помощью плагина NPAPI; Во время отладки я вижу, что все цепочки функций (HasProperty, HasMethod и GetProperty) вызываются. Более того, я вижу, что во время вызова GetProperty я устанавливаю новые значения в параметр результата. Но после ухода из GetProperty я получаю исключение и не могу понять, в чем причина.
Может ли FireFox вызывать некоторые дополнительные функции, которые я забыл инициализировать?
заранее спасибо
Мой код:
// static function which calls Get_Property for the instance of CScriptableNPObject
bool CScriptableNPObject::NP_GetProperty(NPObject *npobj, NPIdentifier name, NPVariant *result)
{
m_Logs.WriteLogs(10, _T("Enter the CScriptableNPObject::NP_GetProperty()"));
return ((CScriptableNPObject *)npobj)->GetProperty(name, result);
}
// just converter name from NPIdentifier to char *
bool CScriptableNPObject::GetProperty(NPIdentifier name, NPVariant *result)
{
NPUTF8 *pszProperty = m_pNPNFuncs->utf8fromidentifier(name);
return GetProperty(pszProperty, result);
}
// checking the dictionary of properties, if property exists put its value into the result
bool CScriptableNPObject::GetProperty(NPUTF8 *pszProperty, NPVariant *result)
{
VOID_TO_NPVARIANT(*result);
JSPropertiesMap::iterator it = m_JSProperties.find(pszProperty);
if (it == m_JSProperties.end())
return false;
NPUTF8 *pszNewPropertyValue = new NPUTF8[it->second->value.stringValue.UTF8Length + 1];
sprintf(pszNewPropertyValue, it->second->value.stringValue.UTF8Characters);
STRINGZ_TO_NPVARIANT(pszNewPropertyValue, *result);
return true;
}
1 ответ
Вам нужно использовать NPN_MemAlloc()
:
NPUTF8* newValue = NPN_MemAlloc(length + 1);