From f594720280b2e40d81fa6e286a0ef8868687ef7e Mon Sep 17 00:00:00 2001 From: Pierre Lejeune Date: Sat, 30 Jun 2018 21:10:06 +0200 Subject: [PATCH] Build with mozjs-52 Fixes #71 --- libproxy/cmake/modules/pacrunner_mozjs.cmk | 2 +- libproxy/modules/pacrunner_mozjs.cpp | 19 +++++++------------ 2 files changed, 8 insertions(+), 13 deletions(-) diff --git a/libproxy/cmake/modules/pacrunner_mozjs.cmk b/libproxy/cmake/modules/pacrunner_mozjs.cmk index c2ae3db..20857fb 100644 --- a/libproxy/cmake/modules/pacrunner_mozjs.cmk +++ b/libproxy/cmake/modules/pacrunner_mozjs.cmk @@ -9,7 +9,7 @@ if(WIN32) elseif(NOT APPLE) option(WITH_MOZJS "Search for MOZJS package" ON) if (WITH_MOZJS) - pkg_search_module(MOZJS mozjs-38) + pkg_search_module(MOZJS mozjs-52) if(MOZJS_FOUND) include_directories(${MOZJS_INCLUDE_DIRS}) link_directories(${MOZJS_LIBRARY_DIRS}) diff --git a/libproxy/modules/pacrunner_mozjs.cpp b/libproxy/modules/pacrunner_mozjs.cpp index a70b2e9..ed07c69 100644 --- a/libproxy/modules/pacrunner_mozjs.cpp +++ b/libproxy/modules/pacrunner_mozjs.cpp @@ -35,6 +35,7 @@ using namespace libproxy; #pragma GCC diagnostic ignored "-Winvalid-offsetof" #include #pragma GCC diagnostic error "-Winvalid-offsetof" +#include #include #include "pacutils.h" @@ -111,17 +112,14 @@ class mozjs_pacrunner : public pacrunner { mozjs_pacrunner(string pac, const url& pacurl) throw (bad_alloc) : pacrunner(pac, pacurl) { // Set defaults - this->jsrun = nullptr; this->jsctx = nullptr; JS_Init(); - // Initialize Javascript runtime environment - if (!(this->jsrun = JS_NewRuntime(1024 * 1024))) goto error; - if (!(this->jsctx = JS_NewContext(this->jsrun, 1024 * 1024))) goto error; + // Initialize Javascript context + if (!(this->jsctx = JS_NewContext(1024 * 1024))) goto error; { JS::RootedValue rval(this->jsctx); JS::CompartmentOptions compart_opts; - compart_opts.setVersion(JSVERSION_LATEST); this->jsglb = new JS::Heap(JS_NewGlobalObject( this->jsctx, &cls, @@ -139,16 +137,15 @@ class mozjs_pacrunner : public pacrunner { JS::CompileOptions options(this->jsctx); options.setUTF8(true); - JS::Evaluate(this->jsctx, global, options, JAVASCRIPT_ROUTINES, - strlen(JAVASCRIPT_ROUTINES), &rval); + JS::Evaluate(this->jsctx, options, JAVASCRIPT_ROUTINES, + strlen(JAVASCRIPT_ROUTINES), JS::MutableHandleValue(&rval)); // Add PAC to the environment - JS::Evaluate(this->jsctx, global, options, pac.c_str(), pac.length(), &rval); + JS::Evaluate(this->jsctx, options, pac.c_str(), pac.length(), JS::MutableHandleValue(&rval)); return; } error: if (this->jsctx) JS_DestroyContext(this->jsctx); - if (this->jsrun) JS_DestroyRuntime(this->jsrun); throw bad_alloc(); } @@ -156,7 +153,6 @@ class mozjs_pacrunner : public pacrunner { if (this->jsac) delete this->jsac; if (this->jsglb) delete this->jsglb; if (this->jsctx) JS_DestroyContext(this->jsctx); - if (this->jsrun) JS_DestroyRuntime(this->jsrun); JS_ShutDown(); } @@ -178,7 +174,7 @@ class mozjs_pacrunner : public pacrunner { JS::RootedObject global(this->jsctx,this->jsglb->get()); bool result = JS_CallFunctionName(this->jsctx, global, "FindProxyForURL", args, &rval); if (!result) return ""; - + char * tmpanswer = JS_EncodeString(this->jsctx, rval.toString()); string answer = string(tmpanswer); JS_free(this->jsctx, tmpanswer); @@ -188,7 +184,6 @@ class mozjs_pacrunner : public pacrunner { } private: - JSRuntime *jsrun; JSContext *jsctx; JS::Heap *jsglb; JSAutoCompartment *jsac;