Chrome более новая версия (14) не дает строку с нулевым символом в конце NPVariant
chrome более новая версия (14) не дает строку с нулевым завершением как часть NPVariant, тогда как firefox действует по-другому и дает строку с нулевым завершением. Это ожидается?
Что мы можем сделать, кроме извлечения строки, выделения памяти и добавления нулевого символа, а затем освобождения того же самого..... все это только для добавления нулевого символа??
1 ответ
NPVariant NPStrings никогда не требовалось включать в себя завершенную NULL строку. Иногда они так или иначе. Однако они включают в себя "длину", указывающую длину строки; Обычно я просто конвертирую его в std::string примерно так:
retVal = std::string(npVar->value.stringValue.UTF8Characters, npVar->value.stringValue.UTF8Length);
Вот как это делает FireBreath; https://github.com/firebreath/FireBreath/blob/master/src/NpapiCore/NpapiBrowserHost.cpp#L253