const CharT* match(const std::string* str) { MOZ_ASSERT(str); size_t length = str->length() / sizeof(CharT); auto tempString = reinterpret_cast<const CharT*>(str->data()); UniquePtr<CharT[], NSFreePolicy> owned(NS_strndup(tempString, length)); if (!owned || !internedStrings.append(Move(owned))) return nullptr; return internedStrings.back().get(); }
const char16_t* HeapSnapshot::borrowUniqueString(const char16_t* duplicateString, size_t length) { MOZ_ASSERT(duplicateString); UniqueStringHashPolicy::Lookup lookup(duplicateString, length); auto ptr = strings.lookupForAdd(lookup); if (!ptr) { UniqueString owned(NS_strndup(duplicateString, length)); if (!owned || !strings.add(ptr, Move(owned))) return nullptr; } MOZ_ASSERT(ptr->get() != duplicateString); return ptr->get(); }
PRUnichar* NS_strdup(const PRUnichar *aString) { PRUint32 len = NS_strlen(aString); return NS_strndup(aString, len); }
char16_t* NS_strdup(const char16_t* aString) { uint32_t len = NS_strlen(aString); return NS_strndup(aString, len); }