1 /* This Source Code Form is subject to the terms of the Mozilla Public 2 * License, v. 2.0. If a copy of the MPL was not distributed with this 3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 4 5 #include "nsHtml5DependentUTF16Buffer.h" 6 nsHtml5DependentUTF16Buffer(const nsAString & aToWrap)7nsHtml5DependentUTF16Buffer::nsHtml5DependentUTF16Buffer(const nsAString& aToWrap) 8 : nsHtml5UTF16Buffer(const_cast<char16_t*> (aToWrap.BeginReading()), 9 aToWrap.Length()) 10 { 11 MOZ_COUNT_CTOR(nsHtml5DependentUTF16Buffer); 12 } 13 ~nsHtml5DependentUTF16Buffer()14nsHtml5DependentUTF16Buffer::~nsHtml5DependentUTF16Buffer() 15 { 16 MOZ_COUNT_DTOR(nsHtml5DependentUTF16Buffer); 17 } 18 19 already_AddRefed<nsHtml5OwningUTF16Buffer> FalliblyCopyAsOwningBuffer()20nsHtml5DependentUTF16Buffer::FalliblyCopyAsOwningBuffer() 21 { 22 int32_t newLength = getEnd() - getStart(); 23 RefPtr<nsHtml5OwningUTF16Buffer> newObj = 24 nsHtml5OwningUTF16Buffer::FalliblyCreate(newLength); 25 if (!newObj) { 26 return nullptr; 27 } 28 newObj->setEnd(newLength); 29 memcpy(newObj->getBuffer(), 30 getBuffer() + getStart(), 31 newLength * sizeof(char16_t)); 32 return newObj.forget(); 33 } 34