mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-18 23:15:38 +00:00
Bug 970001 - Fix Valgrind-detected leaks involving sourcePolicy. r=till
This commit is contained in:
parent
936c641c73
commit
96076a1bed
@ -1236,7 +1236,7 @@ class CloneBufferObject : public JSObject {
|
||||
}
|
||||
|
||||
uint64_t *data() const {
|
||||
return static_cast<uint64_t*>(getReservedSlot(0).toPrivate());
|
||||
return static_cast<uint64_t*>(getReservedSlot(DATA_SLOT).toPrivate());
|
||||
}
|
||||
|
||||
void setData(uint64_t *aData) {
|
||||
|
@ -834,7 +834,9 @@ ParseCompileOptions(JSContext *cx, CompileOptions &options, HandleObject opts,
|
||||
JSString *s = ToString(cx, v);
|
||||
if (!s)
|
||||
return false;
|
||||
char *policy = JS_EncodeStringToUTF8(cx, s);
|
||||
|
||||
JSAutoByteString bytes;
|
||||
char *policy = bytes.encodeUtf8(cx, s);
|
||||
if (!policy)
|
||||
return false;
|
||||
if (strcmp(policy, "NO_SOURCE") == 0) {
|
||||
|
@ -4514,6 +4514,7 @@ DebuggerGenericEval(JSContext *cx, const char *fullMethodName, const Value &code
|
||||
}
|
||||
|
||||
/* Set options from object if provided. */
|
||||
JSAutoByteString url_bytes;
|
||||
char *url = nullptr;
|
||||
unsigned lineNumber = 1;
|
||||
|
||||
@ -4527,7 +4528,9 @@ DebuggerGenericEval(JSContext *cx, const char *fullMethodName, const Value &code
|
||||
RootedString url_str(cx, ToString<CanGC>(cx, v));
|
||||
if (!url_str)
|
||||
return false;
|
||||
url = JS_EncodeString(cx, url_str);
|
||||
url = url_bytes.encodeLatin1(cx, url_str);
|
||||
if (!url)
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!JS_GetProperty(cx, opts, "lineNumber", &v))
|
||||
@ -4594,8 +4597,6 @@ DebuggerGenericEval(JSContext *cx, const char *fullMethodName, const Value &code
|
||||
bool ok = EvaluateInEnv(cx, env, thisv, frame,
|
||||
ConstTwoByteChars(flat->chars(), flat->length()),
|
||||
flat->length(), url ? url : "debugger eval code", lineNumber, &rval);
|
||||
if (url)
|
||||
JS_free(cx, url);
|
||||
return dbg->receiveCompletionValue(ac, ok, rval, vp);
|
||||
}
|
||||
|
||||
|
@ -92,27 +92,25 @@ js::intrinsic_ThrowError(JSContext *cx, unsigned argc, Value *vp)
|
||||
JS_ASSERT(efs->argCount == args.length() - 1);
|
||||
#endif
|
||||
|
||||
char *errorArgs[3] = {nullptr, nullptr, nullptr};
|
||||
JSAutoByteString errorArgs[3];
|
||||
for (unsigned i = 1; i < 4 && i < args.length(); i++) {
|
||||
RootedValue val(cx, args[i]);
|
||||
if (val.isInt32()) {
|
||||
JSString *str = ToString<CanGC>(cx, val);
|
||||
if (!str)
|
||||
return false;
|
||||
errorArgs[i - 1] = JS_EncodeString(cx, str);
|
||||
errorArgs[i - 1].encodeLatin1(cx, str);
|
||||
} else if (val.isString()) {
|
||||
errorArgs[i - 1] = JS_EncodeString(cx, ToString<CanGC>(cx, val));
|
||||
errorArgs[i - 1].encodeLatin1(cx, val.toString());
|
||||
} else {
|
||||
errorArgs[i - 1] = DecompileValueGenerator(cx, JSDVG_SEARCH_STACK, val, NullPtr());
|
||||
errorArgs[i - 1].initBytes(DecompileValueGenerator(cx, JSDVG_SEARCH_STACK, val, NullPtr()));
|
||||
}
|
||||
if (!errorArgs[i - 1])
|
||||
return false;
|
||||
}
|
||||
|
||||
JS_ReportErrorNumber(cx, js_GetErrorMessage, nullptr, errorNumber,
|
||||
errorArgs[0], errorArgs[1], errorArgs[2]);
|
||||
for (unsigned i = 0; i < 3; i++)
|
||||
js_free(errorArgs[i]);
|
||||
errorArgs[0].ptr(), errorArgs[1].ptr(), errorArgs[2].ptr());
|
||||
return false;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user