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; |