Gentoo Archives: gentoo-commits

From: "Ian Stakenvicius (axs)" <axs@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] gentoo-x86 commit in net-misc/mediatomb/files: mediatomb-0.12.1-mozjs185.patch
Date: Thu, 17 Nov 2011 03:40:41
Message-Id: 20111117034031.8731820033@flycatcher.gentoo.org
1 axs 11/11/17 03:40:31
2
3 Added: mediatomb-0.12.1-mozjs185.patch
4 Log:
5 in-place update to support dev-lang/spidermonkey-1.8.5 for bug 376993
6
7 (Portage version: 2.1.10.11/cvs/Linux i686)
8
9 Revision Changes Path
10 1.1 net-misc/mediatomb/files/mediatomb-0.12.1-mozjs185.patch
11
12 file : http://sources.gentoo.org/viewvc.cgi/gentoo-x86/net-misc/mediatomb/files/mediatomb-0.12.1-mozjs185.patch?rev=1.1&view=markup
13 plain: http://sources.gentoo.org/viewvc.cgi/gentoo-x86/net-misc/mediatomb/files/mediatomb-0.12.1-mozjs185.patch?rev=1.1&content-type=text/plain
14
15 Index: mediatomb-0.12.1-mozjs185.patch
16 ===================================================================
17 --- mediatomb-0.12.1/configure.ac 2010-04-07 18:38:51.000000000 -0400
18 +++ mediatomb-0.12.1/configure.ac 2011-11-16 21:56:46.000000000 -0500
19 @@ -1006,14 +1006,23 @@
20 MOZLIB=smjs
21 ],
22 [
23 - LDFLAGS="-L$JS_SEARCH_LIBS $LDFLAGS_SAVE -lmozjs $ADD_PTHREAD_CFLAGS"
24 - AC_CHECK_LIB(mozjs, JS_NewObject,
25 + LDFLAGS="-L$JS_SEARCH_LIBS $LDFLAGS_SAVE -lmozjs185 $ADD_PTHREAD_CFLAGS"
26 + AC_CHECK_LIB(mozjs185, JS_NewObject,
27 [
28 - JS_LIBS="-L$JS_SEARCH_LIBS -lmozjs"
29 - MOZLIB=mozjs
30 + JS_LIBS="-L$JS_SEARCH_LIBS -lmozjs185"
31 + MOZLIB=mozjs185
32 ],
33 [
34 - AC_MSG_ERROR([Spidermonkey not found in requested location $JS_SEARCH_LIBS])
35 + LDFLAGS="-L$JS_SEARCH_LIBS $LDFLAGS_SAVE -lmozjs $ADD_PTHREAD_CFLAGS"
36 + AC_CHECK_LIB(mozjs, JS_NewObject,
37 + [
38 + JS_LIBS="-L$JS_SEARCH_LIBS -lmozjs"
39 + MOZLIB=mozjs
40 + ],
41 + [
42 + AC_MSG_ERROR([Spidermonkey not found in requested location $JS_SEARCH_LIBS])
43 + ]
44 + )
45 ]
46 )
47 ]
48 @@ -1036,39 +1045,58 @@
49 ],
50 [
51 unset ac_cv_lib_smjs_JS_NewObject
52 - AC_CHECK_LIB(mozjs, JS_NewObject,
53 + AC_CHECK_LIB(mozjs185, JS_NewObject,
54 [
55 - MOZLIB=mozjs
56 - JS_LIBS="-lmozjs"
57 + MOZLIB=mozjs185
58 + JS_LIBS="-lmozjs185"
59 ],
60 [
61 - LDFLAGS="-L$SEARCH_DIR_LIBS $LDFLAGS_SAVE $ADD_PTHREAD_CFLAGS"
62 - unset ac_cv_lib_js_JS_NewObject
63 - AC_CHECK_LIB(js, JS_NewObject,
64 - [
65 - JS_LIBS="-L$SEARCH_DIR_LIBS -ljs"
66 - MOZLIB=js
67 - ],
68 - [
69 - unset ac_cv_lib_smjs_JS_NewObject
70 - AC_CHECK_LIB(smjs, JS_NewObject,
71 - [
72 - JS_LIBS="-L$SEARCH_DIR_LIBS -lsmjs"
73 - MOZLIB=smjs
74 - ],
75 - [
76 - LDFLAGS="-L$SEARCH_DIR_LIBS $LDFLAGS_SAVE -lmozjs"
77 - unset ac_cv_lib_mozjs_JS_NewObject
78 - AC_CHECK_LIB(mozjs, JS_NewObject,
79 - [
80 - JS_LIBS="-L$SEARCH_DIR_LIBS -lmozjs"
81 - MOZLIB=mozjs
82 - ],
83 - [
84 - JS_OK=missing
85 - AC_MSG_RESULT(libjs/libsmjs link failed, giving up)
86 - ]
87 - )
88 + unset ac_cv_lib_smjs_JS_NewObject
89 + AC_CHECK_LIB(mozjs, JS_NewObject,
90 + [
91 + MOZLIB=mozjs
92 + JS_LIBS="-lmozjs"
93 + ],
94 + [
95 + LDFLAGS="-L$SEARCH_DIR_LIBS $LDFLAGS_SAVE $ADD_PTHREAD_CFLAGS"
96 + unset ac_cv_lib_js_JS_NewObject
97 + AC_CHECK_LIB(js, JS_NewObject,
98 + [
99 + JS_LIBS="-L$SEARCH_DIR_LIBS -ljs"
100 + MOZLIB=js
101 + ],
102 + [
103 + unset ac_cv_lib_smjs_JS_NewObject
104 + AC_CHECK_LIB(smjs, JS_NewObject,
105 + [
106 + JS_LIBS="-L$SEARCH_DIR_LIBS -lsmjs"
107 + MOZLIB=smjs
108 + ],
109 + [
110 + LDFLAGS="-L$SEARCH_DIR_LIBS $LDFLAGS_SAVE -lmozjs185"
111 + unset ac_cv_lib_mozjs_JS_NewObject
112 + AC_CHECK_LIB(mozjs185, JS_NewObject,
113 + [
114 + JS_LIBS="-L$SEARCH_DIR_LIBS -lmozjs185"
115 + MOZLIB=mozjs185
116 + ],
117 + [
118 + LDFLAGS="-L$SEARCH_DIR_LIBS $LDFLAGS_SAVE -lmozjs"
119 + unset ac_cv_lib_mozjs_JS_NewObject
120 + AC_CHECK_LIB(mozjs, JS_NewObject,
121 + [
122 + JS_LIBS="-L$SEARCH_DIR_LIBS -lmozjs"
123 + MOZLIB=mozjs
124 + ],
125 + [
126 + JS_OK=missing
127 + AC_MSG_RESULT(libjs/libsmjs link failed, giving up)
128 + ]
129 + )
130 + ]
131 + )
132 + ]
133 + )
134 ]
135 )
136 ]
137 diff -ur mediatomb-0.12.1.orig/build/Makefile.in mediatomb-0.12.1/build/Makefile.in
138 --- mediatomb-0.12.1.orig/build/Makefile.in 2010-04-07 18:40:15.000000000 -0400
139 +++ mediatomb-0.12.1/build/Makefile.in 2011-11-16 22:28:06.000000000 -0500
140 @@ -257,7 +257,7 @@
141 CXX = @CXX@
142 CXXCPP = @CXXCPP@
143 CXXDEPMODE = @CXXDEPMODE@
144 -CXXFLAGS = @CXXFLAGS@
145 +CXXFLAGS = -fpermissive @CXXFLAGS@
146 CYGPATH_W = @CYGPATH_W@
147 DB_AUTOCREATE_OPTION_ENABLED = @DB_AUTOCREATE_OPTION_ENABLED@
148 DB_AUTOCREATE_OPTION_REQUESTED = @DB_AUTOCREATE_OPTION_REQUESTED@
149 diff -ur mediatomb-0.12.1.orig/src/scripting/import_script.cc mediatomb-0.12.1/src/scripting/import_script.cc
150 --- mediatomb-0.12.1.orig/src/scripting/import_script.cc 2010-03-25 10:58:05.000000000 -0400
151 +++ mediatomb-0.12.1/src/scripting/import_script.cc 2011-11-16 22:28:06.000000000 -0500
152 @@ -53,8 +53,8 @@
153 try
154 {
155 load(scriptPath);
156 - root = JS_NewScriptObject(cx, script);
157 - JS_AddNamedRoot(cx, &root, "ImportScript");
158 + root = JS_NewObject(cx, NULL, script, NULL);
159 + JS_AddNamedObjectRoot(cx, &root, "ImportScript");
160 }
161 catch (Exception ex)
162 {
163 @@ -117,7 +117,7 @@
164 #endif
165
166 if (root)
167 - JS_RemoveRoot(cx, &root);
168 + JS_RemoveObjectRoot(cx, &root);
169
170 #ifdef JS_THREADSAFE
171 JS_EndRequest(cx);
172 diff -ur mediatomb-0.12.1.orig/src/scripting/js_functions.cc mediatomb-0.12.1/src/scripting/js_functions.cc
173 --- mediatomb-0.12.1.orig/src/scripting/js_functions.cc 2010-03-25 10:58:05.000000000 -0400
174 +++ mediatomb-0.12.1/src/scripting/js_functions.cc 2011-11-16 22:28:21.000000000 -0500
175 @@ -49,30 +49,45 @@
176 extern "C" {
177
178 JSBool
179 -js_print(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
180 +js_print(JSContext *cx, uintN argc, jsval *argv)
181 {
182 - uintN i;
183 + uintN i, j;
184 JSString *str;
185
186 for (i = 0; i < argc; i++)
187 {
188 - str = JS_ValueToString(cx, argv[i]);
189 + String fmtStr;
190 + for (j = 0; j < argc; j++)
191 + {
192 + if (j == i)
193 + fmtStr = fmtStr + "S";
194 + else
195 + fmtStr = fmtStr + "*";
196 + }
197 + if(!JS_ConvertArguments(cx, 1, JS_ARGV(cx, argv), fmtStr.c_str(), &str))
198 + {
199 + log_debug("Could not parse input arguments\n");
200 + return JS_TRUE;
201 + }
202 +
203 if (!str)
204 return JS_TRUE;
205 - argv[i] = STRING_TO_JSVAL(str);
206 - log_js("%s\n", JS_GetStringBytes(str));
207 +
208 + char * log_str = JS_EncodeString(cx, str);
209 + log_js("%s\n", log_str);
210 + JS_free(cx, log_str);
211 }
212 return JS_TRUE;
213 }
214
215 JSBool
216 -js_copyObject(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
217 +js_copyObject(JSContext *cx, uintN argc, jsval *argv)
218 {
219 jsval arg;
220 JSObject *js_cds_obj;
221 JSObject *js_cds_clone_obj;
222
223 - Script *self = (Script *)JS_GetPrivate(cx, obj);
224 + Script *self = (Script *)JS_GetPrivate(cx, JS_THIS_OBJECT(cx, argv));
225
226 try
227 {
228 @@ -91,7 +106,7 @@
229
230 self->cdsObject2jsObject(cds_obj, js_cds_clone_obj);
231
232 - *rval = OBJECT_TO_JSVAL(js_cds_clone_obj);
233 + JS_SET_RVAL(cx, argv, OBJECT_TO_JSVAL(js_cds_clone_obj));
234
235 return JS_TRUE;
236
237 @@ -110,28 +125,58 @@
238 }
239
240 JSBool
241 -js_addCdsObject(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
242 +js_addCdsObject(JSContext *cx, uintN argc, jsval *argv)
243 {
244 try
245 {
246 - jsval arg;
247 - JSString *str;
248 - String path;
249 - String containerclass;
250 + // Inputs from native code
251 + JSObject *js_cds_obj = NULL;
252 + JSString *str = NULL;
253 + JSString *cont = NULL;
254
255 - JSObject *js_cds_obj;
256 + String path = nil;
257 + String containerclass = nil;
258 +
259 + JSObject *obj = JS_THIS_OBJECT(cx, argv);
260 JSObject *js_orig_obj = NULL;
261 Ref<CdsObject> orig_object;
262
263 Ref<StringConverter> p2i;
264 Ref<StringConverter> i2i;
265 + switch (argc)
266 + {
267 + case 0:
268 + log_debug("No input arguments given\n");
269 + return JS_FALSE;
270 + case 1:
271 + if(!JS_ConvertArguments(cx, 1, JS_ARGV(cx, argv), "o", &js_cds_obj))
272 + {
273 + log_debug("Could not parse input arguments\n");
274 + return JS_TRUE;
275 + }
276 + break;
277 + case 2:
278 + if(!JS_ConvertArguments(cx, 2, JS_ARGV(cx, argv), "oS", &js_cds_obj, &str))
279 + {
280 + log_debug("Could not parse input arguments\n");
281 + return JS_TRUE;
282 + }
283 + break;
284 + default:
285 + if(!JS_ConvertArguments(cx, 3, JS_ARGV(cx, argv), "oSS", &js_cds_obj, &str, &cont))
286 + {
287 + log_debug("Could not parse input arguments\n");
288 + return JS_TRUE;
289 + }
290 + break;
291 + }
292
293 Script *self = (Script *)JS_GetPrivate(cx, obj);
294
295 if (self == NULL)
296 {
297 log_debug("Could not retrieve class instance from global object\n");
298 - return JS_FALSE;
299 + return JS_TRUE;
300 }
301
302 if (self->whoami() == S_PLAYLIST)
303 @@ -142,26 +187,17 @@
304 {
305 i2i = StringConverter::i2i();
306 }
307 -
308 - arg = argv[0];
309 - if (!JSVAL_IS_OBJECT(arg))
310 - return JS_TRUE;
311 - if (!JS_ValueToObject(cx, arg, &js_cds_obj))
312 - return JS_TRUE;
313
314 - // root it
315 - argv[0] = OBJECT_TO_JSVAL(js_cds_obj);
316
317 - str = JS_ValueToString(cx, argv[1]);
318 if (!str)
319 path = _("/");
320 else
321 - path = JS_GetStringBytes(str);
322 + path = JS_EncodeString(cx, str);
323 +
324
325 - JSString *cont = JS_ValueToString(cx, argv[2]);
326 if (cont)
327 {
328 - containerclass = JS_GetStringBytes(cont);
329 + containerclass = JS_EncodeString(cx, cont);
330 if (!string_ok(containerclass) || containerclass == "undefined")
331 containerclass = nil;
332 }
333 @@ -177,9 +213,6 @@
334 return JS_TRUE;
335 }
336
337 - // root it
338 - argv[1] = OBJECT_TO_JSVAL(js_orig_obj);
339 -
340 orig_object = self->jsObject2cdsObject(js_orig_obj, self->getProcessedObject());
341 if (orig_object == nil)
342 return JS_TRUE;
343 @@ -285,8 +318,7 @@
344 JSString *str2 = JS_NewStringCopyN(cx, tmp.c_str(), tmp.length());
345 if (!str2)
346 return JS_TRUE;
347 - *rval = STRING_TO_JSVAL(str2);
348 -
349 + JS_SET_RVAL(cx, argv, STRING_TO_JSVAL(str2));
350 return JS_TRUE;
351 }
352 catch (ServerShutdownException se)
353 @@ -302,7 +334,7 @@
354 return JS_TRUE;
355 }
356
357 -static JSBool convert_charset_generic(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval, charset_convert_t chr)
358 +static JSBool convert_charset_generic(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, charset_convert_t chr)
359 {
360 try
361 {
362 @@ -321,7 +353,7 @@
363 {
364 str = JS_ValueToString(cx, argv[0]);
365 if (str)
366 - result = JS_GetStringBytes(str);
367 + result = JS_EncodeString(cx, str);
368 }
369
370 if (result != nil)
371 @@ -330,7 +362,7 @@
372 JSString *str2 = JS_NewStringCopyN(cx, result.c_str(), result.length());
373 if (!str2)
374 return JS_TRUE;
375 - *rval = STRING_TO_JSVAL(str2);
376 + JS_SET_RVAL(cx, argv, STRING_TO_JSVAL(str2));
377 }
378 }
379 catch (ServerShutdownException se)
380 @@ -347,24 +379,23 @@
381 }
382
383
384 -JSBool js_f2i(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
385 +JSBool js_f2i(JSContext *cx, uintN argc, jsval *argv)
386 {
387 - return convert_charset_generic(cx, obj, argc, argv, rval, F2I);
388 + return convert_charset_generic(cx, JS_THIS_OBJECT(cx, argv), argc, argv, F2I);
389 }
390
391 -JSBool js_m2i(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
392 +JSBool js_m2i(JSContext *cx, uintN argc, jsval *argv)
393 {
394 - return convert_charset_generic(cx, obj, argc, argv, rval, M2I);
395 -}
396 + return convert_charset_generic(cx, JS_THIS_OBJECT(cx, argv), argc, argv, M2I); }
397
398 -JSBool js_p2i(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
399 +JSBool js_p2i(JSContext *cx, uintN argc, jsval *argv)
400 {
401 - return convert_charset_generic(cx, obj, argc, argv, rval, P2I);
402 + return convert_charset_generic(cx, JS_THIS_OBJECT(cx, argv), argc, argv, P2I);
403 }
404
405 -JSBool js_j2i(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
406 +JSBool js_j2i(JSContext *cx, uintN argc, jsval *argv)
407 {
408 - return convert_charset_generic(cx, obj, argc, argv, rval, J2I);
409 + return convert_charset_generic(cx, JS_THIS_OBJECT(cx, argv), argc, argv, J2I);
410 }
411
412 } // extern "C"
413 diff -ur mediatomb-0.12.1.orig/src/scripting/js_functions.h mediatomb-0.12.1/src/scripting/js_functions.h
414 --- mediatomb-0.12.1.orig/src/scripting/js_functions.h 2010-03-25 10:58:05.000000000 -0400
415 +++ mediatomb-0.12.1/src/scripting/js_functions.h 2011-11-16 22:28:06.000000000 -0500
416 @@ -40,18 +40,18 @@
417 extern "C" {
418
419 /// \brief Log output.
420 -JSBool js_print(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
421 +JSBool js_print(JSContext *cx, uintN argc, jsval *argv);
422
423 /// \brief Adds an object to the database.
424 -JSBool js_addCdsObject(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
425 +JSBool js_addCdsObject(JSContext *cx, uintN argc, jsval *argv);
426
427 /// \brief Makes a copy of an CDS object.
428 -JSBool js_copyObject(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
429 +JSBool js_copyObject(JSContext *cx, uintN argc, jsval *argv);
430
431 -JSBool js_f2i(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
432 -JSBool js_m2i(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
433 -JSBool js_p2i(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
434 -JSBool js_j2i(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval);
435 +JSBool js_f2i(JSContext *cx, uintN argc, jsval *argv);
436 +JSBool js_m2i(JSContext *cx, uintN argc, jsval *argv);
437 +JSBool js_p2i(JSContext *cx, uintN argc, jsval *argv);
438 +JSBool js_j2i(JSContext *cx, uintN argc, jsval *argv);
439
440 } // extern "C"
441
442 diff -ur mediatomb-0.12.1.orig/src/scripting/playlist_parser_script.cc mediatomb-0.12.1/src/scripting/playlist_parser_script.cc
443 --- mediatomb-0.12.1.orig/src/scripting/playlist_parser_script.cc 2010-03-25 10:58:05.000000000 -0400
444 +++ mediatomb-0.12.1/src/scripting/playlist_parser_script.cc 2011-11-16 22:28:06.000000000 -0500
445 @@ -46,9 +46,9 @@
446 extern "C" {
447
448 static JSBool
449 -js_readln(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
450 +js_readln(JSContext *cx, uintN argc, jsval *argv)
451 {
452 - PlaylistParserScript *self = (PlaylistParserScript *)JS_GetPrivate(cx, obj);
453 + PlaylistParserScript *self = (PlaylistParserScript *)JS_GetPrivate(cx, JS_THIS_OBJECT(cx, argv));
454
455 String line;
456
457 @@ -69,7 +69,7 @@
458
459 JSString *jsline = JS_NewStringCopyZ(cx, line.c_str());
460
461 - *rval = STRING_TO_JSVAL(jsline);
462 + JS_SET_RVAL(cx, argv, STRING_TO_JSVAL(jsline));
463
464 return JS_TRUE;
465 }
466 @@ -93,8 +93,8 @@
467
468 String scriptPath = ConfigManager::getInstance()->getOption(CFG_IMPORT_SCRIPTING_PLAYLIST_SCRIPT);
469 load(scriptPath);
470 - root = JS_NewScriptObject(cx, script);
471 - JS_AddNamedRoot(cx, &root, "PlaylistScript");
472 + root = JS_NewObject(cx, NULL, script, NULL);
473 + JS_AddNamedObjectRoot(cx, &root, "PlaylistScript");
474 }
475 catch (Exception ex)
476 {
477 @@ -245,7 +245,7 @@
478 #endif
479
480 if (root)
481 - JS_RemoveRoot(cx, &root);
482 + JS_RemoveObjectRoot(cx, &root);
483
484 #ifdef JS_THREADSAFE
485 JS_EndRequest(cx);
486 diff -ur mediatomb-0.12.1.orig/src/scripting/script.cc mediatomb-0.12.1/src/scripting/script.cc
487 --- mediatomb-0.12.1.orig/src/scripting/script.cc 2010-03-25 10:58:05.000000000 -0400
488 +++ mediatomb-0.12.1/src/scripting/script.cc 2011-11-16 22:28:06.000000000 -0500
489 @@ -87,7 +87,7 @@
490 str = JS_ValueToString(cx, val);
491 if (! str)
492 return nil;
493 - return JS_GetStringBytes(str);
494 + return JS_EncodeString(cx, str);
495 }
496
497 int Script::getBoolProperty(JSObject *obj, String name)
498 @@ -427,14 +427,14 @@
499 try
500 {
501 common_script = _load(common_scr_path);
502 - common_root = JS_NewScriptObject(cx, common_script);
503 - JS_AddNamedRoot(cx, &common_root, "common-script");
504 + common_root = JS_NewObject(cx, NULL, common_script, NULL);
505 + JS_AddNamedObjectRoot(cx, &common_root, "common-script");
506 _execute(common_script);
507 }
508 catch (Exception e)
509 {
510 if (common_root)
511 - JS_RemoveRoot(cx, &common_root);
512 + JS_RemoveObjectRoot(cx, &common_root);
513
514 log_js("Unable to load %s: %s\n", common_scr_path.c_str(),
515 e.getMessage().c_str());
516 @@ -460,7 +460,7 @@
517 JS_BeginRequest(cx);
518 #endif
519 if (common_root)
520 - JS_RemoveRoot(cx, &common_root);
521 + JS_RemoveObjectRoot(cx, &common_root);
522
523 /*
524 * scripts are unrooted and will be cleaned up by GC
525 @@ -504,11 +504,11 @@
526 static JSClass global_class =
527 {
528 "global", /* name */
529 - JSCLASS_HAS_PRIVATE, /* flags */
530 + JSCLASS_HAS_PRIVATE | JSCLASS_GLOBAL_FLAGS,/* flags */
531 JS_PropertyStub, /* add property */
532 JS_PropertyStub, /* del property */
533 JS_PropertyStub, /* get property */
534 - JS_PropertyStub, /* set property */
535 + JS_StrictPropertyStub, /* set property */
536 JS_EnumerateStandardClasses, /* enumerate */
537 JS_ResolveStub, /* resolve */
538 JS_ConvertStub, /* convert */
539 @@ -517,7 +517,7 @@
540 };
541
542 /* create the global object here */
543 - glob = JS_NewObject(cx, &global_class, NULL, NULL);
544 + glob = JS_NewCompartmentAndGlobalObject(cx, &global_class, NULL);
545 if (! glob)
546 throw _Exception(_("Scripting: could not initialize glboal class"));
547
548 @@ -539,12 +539,12 @@
549 throw _Exception(_("Scripting: JS_DefineFunctions failed"));
550 }
551
552 -JSScript *Script::_load(zmm::String scriptPath)
553 +JSObject *Script::_load(zmm::String scriptPath)
554 {
555 if (glob == NULL)
556 initGlobalObject();
557
558 - JSScript *scr;
559 + JSObject *scr;
560
561 String scriptText = read_text_file(scriptPath);
562
563 @@ -571,14 +571,11 @@
564
565 void Script::load(zmm::String scriptPath)
566 {
567 - if (script)
568 - JS_DestroyScript(cx, script);
569 -
570 script = _load((scriptPath));
571 }
572
573
574 -void Script::_execute(JSScript *scr)
575 +void Script::_execute(JSObject *scr)
576 {
577 jsval ret_val;
578
579 @@ -662,7 +659,7 @@
580 JSObject *js_meta = getObjectProperty(js, _("meta"));
581 if (js_meta)
582 {
583 - JS_AddNamedRoot(cx, &js_meta, "meta");
584 + JS_AddNamedObjectRoot(cx, &js_meta, "meta");
585 /// \todo: only metadata enumerated in MT_KEYS is taken
586 for (int i = 0; i < M_MAX; i++)
587 {
588 @@ -687,7 +684,7 @@
589 }
590 }
591 }
592 - JS_RemoveRoot(cx, &js_meta);
593 + JS_RemoveObjectRoot(cx, &js_meta);
594 }
595
596 // stuff that has not been exported to js
597 diff -ur mediatomb-0.12.1.orig/src/scripting/script.h mediatomb-0.12.1/src/scripting/script.h
598 --- mediatomb-0.12.1.orig/src/scripting/script.h 2010-03-25 10:58:05.000000000 -0400
599 +++ mediatomb-0.12.1/src/scripting/script.h 2011-11-16 22:28:06.000000000 -0500
600 @@ -66,8 +66,8 @@
601 JSRuntime *rt;
602 JSContext *cx;
603 JSObject *glob;
604 - JSScript *script;
605 - JSScript *common_script;
606 + JSObject *script;
607 + JSObject *common_script;
608
609 public:
610 Script(zmm::Ref<Runtime> runtime);
611 @@ -115,8 +115,8 @@
612 JSObject *common_root;
613
614 void initGlobalObject();
615 - JSScript *_load(zmm::String scriptPath);
616 - void _execute(JSScript *scr);
617 + JSObject *_load(zmm::String scriptPath);
618 + void _execute(JSObject *scr);
619 zmm::Ref<StringConverter> _p2i;
620 zmm::Ref<StringConverter> _j2i;
621 zmm::Ref<StringConverter> _f2i;