mirror of
https://bitbucket.org/chromiumembedded/cef
synced 2025-02-03 04:27:43 +01:00
Fix memory leak when returning zero-length strings from V8 (issue #581).
git-svn-id: https://chromiumembedded.googlecode.com/svn/trunk@604 5089003a-bbd8-11dd-ad1f-f1f9622dbc98
This commit is contained in:
parent
00fbc510da
commit
7987af5acf
@ -414,7 +414,7 @@ class CefStringBase {
|
|||||||
// Clear the string data.
|
// Clear the string data.
|
||||||
///
|
///
|
||||||
void clear() {
|
void clear() {
|
||||||
if (!empty())
|
if (string_)
|
||||||
traits::clear(string_);
|
traits::clear(string_);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -168,6 +168,8 @@ void GetCefString(v8::Handle<v8::String> str, CefString& out) {
|
|||||||
#if defined(CEF_STRING_TYPE_WIDE)
|
#if defined(CEF_STRING_TYPE_WIDE)
|
||||||
// Allocate enough space for a worst-case conversion.
|
// Allocate enough space for a worst-case conversion.
|
||||||
int len = str->Utf8Length();
|
int len = str->Utf8Length();
|
||||||
|
if (len == 0)
|
||||||
|
return;
|
||||||
char* buf = new char[len + 1];
|
char* buf = new char[len + 1];
|
||||||
str->WriteUtf8(buf, len + 1);
|
str->WriteUtf8(buf, len + 1);
|
||||||
|
|
||||||
@ -179,11 +181,15 @@ void GetCefString(v8::Handle<v8::String> str, CefString& out) {
|
|||||||
#else // !defined(CEF_STRING_TYPE_WIDE)
|
#else // !defined(CEF_STRING_TYPE_WIDE)
|
||||||
#if defined(CEF_STRING_TYPE_UTF16)
|
#if defined(CEF_STRING_TYPE_UTF16)
|
||||||
int len = str->Length();
|
int len = str->Length();
|
||||||
|
if (len == 0)
|
||||||
|
return;
|
||||||
char16* buf = new char16[len + 1];
|
char16* buf = new char16[len + 1];
|
||||||
str->Write(reinterpret_cast<uint16_t*>(buf), 0, len + 1);
|
str->Write(reinterpret_cast<uint16_t*>(buf), 0, len + 1);
|
||||||
#else
|
#else
|
||||||
// Allocate enough space for a worst-case conversion.
|
// Allocate enough space for a worst-case conversion.
|
||||||
int len = str->Utf8Length();
|
int len = str->Utf8Length();
|
||||||
|
if (len == 0)
|
||||||
|
return;
|
||||||
char* buf = new char[len + 1];
|
char* buf = new char[len + 1];
|
||||||
str->WriteUtf8(buf, len + 1);
|
str->WriteUtf8(buf, len + 1);
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user