Bug 612642 - JS base64 code needs to be updated for removal of JS_GetStringBytesZ. Wallpaper patch for merging.

This commit is contained in:
Robert Sayre 2010-11-16 11:38:33 -08:00
parent f8d70b12f4
commit 0292bdad44
2 changed files with 46 additions and 18 deletions

View File

@ -373,13 +373,19 @@ nsDOMWorkerFunctions::AtoB(JSContext* aCx,
return JS_FALSE;
}
// We want the bytes here, not the jschars.
const char* bytes = JS_GetStringBytesZ(aCx, str);
if (!bytes) {
return JS_FALSE;
}
size_t len = JS_GetStringEncodingLength(aCx, str);
if (len == size_t(-1))
return JS_FALSE;
nsDependentCString string(bytes, JS_GetStringLength(str));
JSUint32 alloc_len = (len + 1) * sizeof(char);
char *buffer = static_cast<char *>(nsMemory::Alloc(alloc_len));
if (!buffer)
return JS_FALSE;
JS_EncodeStringToBuffer(str, buffer, len);
buffer[len] = '\0';
nsDependentCString string(buffer, len);
nsCAutoString result;
if (NS_FAILED(nsXPConnect::Base64Decode(string, result))) {
@ -419,13 +425,19 @@ nsDOMWorkerFunctions::BtoA(JSContext* aCx,
return JS_FALSE;
}
// We want the bytes here, not the jschars.
const char* bytes = JS_GetStringBytesZ(aCx, str);
if (!bytes) {
return JS_FALSE;
}
size_t len = JS_GetStringEncodingLength(aCx, str);
if (len == size_t(-1))
return JS_FALSE;
nsDependentCString string(bytes, JS_GetStringLength(str));
JSUint32 alloc_len = (len + 1) * sizeof(char);
char *buffer = static_cast<char *>(nsMemory::Alloc(alloc_len));
if (!buffer)
return JS_FALSE;
JS_EncodeStringToBuffer(str, buffer, len);
buffer[len] = '\0';
nsDependentCString string(buffer, len);
nsCAutoString result;
if (NS_FAILED(nsXPConnect::Base64Encode(string, result))) {

View File

@ -225,11 +225,19 @@ Atob(JSContext *cx, uintN argc, jsval *vp)
if (!str)
return JS_FALSE;
const char* bytes = JS_GetStringBytesZ(cx, str);
if (!bytes)
size_t len = JS_GetStringEncodingLength(cx, str);
if (len == size_t(-1))
return JS_FALSE;
nsDependentCString string(bytes, JS_GetStringLength(str));
JSUint32 alloc_len = (len + 1) * sizeof(char);
char *buffer = static_cast<char *>(nsMemory::Alloc(alloc_len));
if (!buffer)
return JS_FALSE;
JS_EncodeStringToBuffer(str, buffer, len);
buffer[len] = '\0';
nsDependentCString string(buffer, JS_GetStringLength(str));
nsCAutoString result;
if (NS_FAILED(nsXPConnect::Base64Decode(string, result))) {
@ -255,11 +263,19 @@ Btoa(JSContext *cx, uintN argc, jsval *vp)
if (!str)
return JS_FALSE;
const char* bytes = JS_GetStringBytesZ(cx, str);
if (!bytes)
size_t len = JS_GetStringEncodingLength(cx, str);
if (len == size_t(-1))
return JS_FALSE;
nsDependentCString data(bytes, JS_GetStringLength(str));
JSUint32 alloc_len = (len + 1) * sizeof(char);
char *buffer = static_cast<char *>(nsMemory::Alloc(alloc_len));
if (!buffer)
return JS_FALSE;
JS_EncodeStringToBuffer(str, buffer, len);
buffer[len] = '\0';
nsDependentCString data(buffer, len);
nsCAutoString result;
if (NS_FAILED(nsXPConnect::Base64Encode(data, result))) {