summaryrefslogtreecommitdiff
path: root/src/3rdparty/javascriptcore/JavaScriptCore/API/JSStringRef.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/3rdparty/javascriptcore/JavaScriptCore/API/JSStringRef.cpp')
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/API/JSStringRef.cpp17
1 files changed, 12 insertions, 5 deletions
diff --git a/src/3rdparty/javascriptcore/JavaScriptCore/API/JSStringRef.cpp b/src/3rdparty/javascriptcore/JavaScriptCore/API/JSStringRef.cpp
index 8e236e4..fc337ef 100644
--- a/src/3rdparty/javascriptcore/JavaScriptCore/API/JSStringRef.cpp
+++ b/src/3rdparty/javascriptcore/JavaScriptCore/API/JSStringRef.cpp
@@ -67,18 +67,18 @@ void JSStringRelease(JSStringRef string)
size_t JSStringGetLength(JSStringRef string)
{
- return string->length();
+ return string ? string->length() : 0;
}
const JSChar* JSStringGetCharactersPtr(JSStringRef string)
{
- return string->characters();
+ return string ? string->characters() : nullptr;
}
size_t JSStringGetMaximumUTF8CStringSize(JSStringRef string)
{
// Any UTF8 character > 3 bytes encodes as a UTF16 surrogate pair.
- return string->length() * 3 + 1; // + 1 for terminating '\0'
+ return string ? string->length() * 3 + 1 : 1; // + 1 for terminating '\0'
}
size_t JSStringGetUTF8CString(JSStringRef string, char* buffer, size_t bufferSize)
@@ -87,8 +87,11 @@ size_t JSStringGetUTF8CString(JSStringRef string, char* buffer, size_t bufferSiz
return 0;
char* p = buffer;
- const UChar* d = string->characters();
- ConversionResult result = convertUTF16ToUTF8(&d, d + string->length(), &p, p + bufferSize - 1, true);
+ ConversionResult result = conversionOK;
+ if (string) {
+ const UChar* d = string->characters();
+ result = convertUTF16ToUTF8(&d, d + string->length(), &p, p + bufferSize - 1, true);
+ }
*p++ = '\0';
if (result != conversionOK && result != targetExhausted)
return 0;
@@ -98,6 +101,10 @@ size_t JSStringGetUTF8CString(JSStringRef string, char* buffer, size_t bufferSiz
bool JSStringIsEqual(JSStringRef a, JSStringRef b)
{
+ if (!a)
+ return (!b || b->length() == 0);
+ if (!b)
+ return (!a || a->length() == 0);
unsigned len = a->length();
return len == b->length() && 0 == memcmp(a->characters(), b->characters(), len * sizeof(UChar));
}