[SCM] mediatomb/master: Fix a failure to categorize media files with the new js.
micove-guest at users.alioth.debian.org
micove-guest at users.alioth.debian.org
Sun Mar 4 04:52:11 UTC 2012
The following commit has been merged in the master branch:
commit ba7310571449331ed0731dc5b329a6c179b27033
Author: Miguel Colon <debian.micove at gmail.com>
Date: Sat Mar 3 19:41:58 2012 -0500
Fix a failure to categorize media files with the new js.
diff --git a/debian/patches/js_parse.patch b/debian/patches/js_parse.patch
new file mode 100644
index 0000000..840539c
--- /dev/null
+++ b/debian/patches/js_parse.patch
@@ -0,0 +1,150 @@
+Description: Mediatomb fails to categorize media files with js 1.8
+Origin: other, http://pkgs.fedoraproject.org/gitweb/?p=mediatomb.git;a=commit;h=16f62e7e
+Bug-Fedora: https://bugzilla.redhat.com/show_bug.cgi?id=714466
+Forwarded: http://sourceforge.net/tracker/?func=detail&aid=3409482&group_id=129766&atid=715782
+Last-Update: 2012-03-03
+
+diff -rup mediatomb-0.12.1/src/scripting/js_functions.cc ../mediatomb-0.12.1/src/scripting/js_functions.cc
+--- mediatomb-0.12.1/src/scripting/js_functions.cc 2011-06-29 21:51:13.641025479 -0400
++++ ../mediatomb-0.12.1/src/scripting/js_functions.cc 2011-06-29 21:49:21.071800273 -0400
+@@ -51,15 +51,28 @@ extern "C" {
+ JSBool
+ js_print(JSContext *cx, uintN argc, jsval *argv)
+ {
+- uintN i;
++ uintN i, j;
+ JSString *str;
+
+ for (i = 0; i < argc; i++)
+ {
+- str = JS_ValueToString(cx, argv[i]);
++ String fmtStr;
++ for (j = 0; j < argc; j++)
++ {
++ if (j == i)
++ fmtStr = fmtStr + "S";
++ else
++ fmtStr = fmtStr + "*";
++ }
++ if(!JS_ConvertArguments(cx, 1, JS_ARGV(cx, argv), fmtStr.c_str(), &str))
++ {
++ log_debug("Could not parse input arguments\n");
++ return JS_TRUE;
++ }
++
+ if (!str)
+ return JS_TRUE;
+- argv[i] = STRING_TO_JSVAL(str);
++
+ char * log_str = JS_EncodeString(cx, str);
+ log_js("%s\n", log_str);
+ JS_free(cx, log_str);
+@@ -116,24 +129,54 @@ js_addCdsObject(JSContext *cx, uintN arg
+ {
+ try
+ {
+- jsval arg;
+- JSString *str;
+- String path;
+- String containerclass;
++ // Inputs from native code
++ JSObject *js_cds_obj = NULL;
++ JSString *str = NULL;
++ JSString *cont = NULL;
+
+- JSObject *js_cds_obj;
++ String path = nil;
++ String containerclass = nil;
++
++ JSObject *obj = JS_THIS_OBJECT(cx, argv);
+ JSObject *js_orig_obj = NULL;
+ Ref<CdsObject> orig_object;
+
+ Ref<StringConverter> p2i;
+ Ref<StringConverter> i2i;
++ switch (argc)
++ {
++ case 0:
++ log_debug("No input arguments given\n");
++ return JS_FALSE;
++ case 1:
++ if(!JS_ConvertArguments(cx, 1, JS_ARGV(cx, argv), "o", &js_cds_obj))
++ {
++ log_debug("Could not parse input arguments\n");
++ return JS_TRUE;
++ }
++ break;
++ case 2:
++ if(!JS_ConvertArguments(cx, 2, JS_ARGV(cx, argv), "oS", &js_cds_obj, &str))
++ {
++ log_debug("Could not parse input arguments\n");
++ return JS_TRUE;
++ }
++ break;
++ default:
++ if(!JS_ConvertArguments(cx, 3, JS_ARGV(cx, argv), "oSS", &js_cds_obj, &str, &cont))
++ {
++ log_debug("Could not parse input arguments\n");
++ return JS_TRUE;
++ }
++ break;
++ }
+
+- Script *self = (Script *)JS_GetPrivate(cx, JS_THIS_OBJECT(cx, argv));
++ Script *self = (Script *)JS_GetPrivate(cx, obj);
+
+ if (self == NULL)
+ {
+ log_debug("Could not retrieve class instance from global object\n");
+- return JS_FALSE;
++ return JS_TRUE;
+ }
+
+ if (self->whoami() == S_PLAYLIST)
+@@ -144,23 +187,14 @@ js_addCdsObject(JSContext *cx, uintN arg
+ {
+ i2i = StringConverter::i2i();
+ }
+-
+- arg = argv[0];
+- if (!JSVAL_IS_OBJECT(arg))
+- return JS_TRUE;
+- if (!JS_ValueToObject(cx, arg, &js_cds_obj))
+- return JS_TRUE;
+
+- // root it
+- argv[0] = OBJECT_TO_JSVAL(js_cds_obj);
+
+- str = JS_ValueToString(cx, argv[1]);
+ if (!str)
+ path = _("/");
+ else
+ path = JS_EncodeString(cx, str);
+
+- JSString *cont = JS_ValueToString(cx, argv[2]);
++
+ if (cont)
+ {
+ containerclass = JS_EncodeString(cx, cont);
+@@ -169,9 +203,9 @@ js_addCdsObject(JSContext *cx, uintN arg
+ }
+
+ if (self->whoami() == S_PLAYLIST)
+- js_orig_obj = self->getObjectProperty(JS_THIS_OBJECT(cx, argv), _("playlist"));
++ js_orig_obj = self->getObjectProperty(obj, _("playlist"));
+ else if (self->whoami() == S_IMPORT)
+- js_orig_obj = self->getObjectProperty(JS_THIS_OBJECT(cx, argv), _("orig"));
++ js_orig_obj = self->getObjectProperty(obj, _("orig"));
+
+ if (js_orig_obj == NULL)
+ {
+@@ -179,9 +213,6 @@ js_addCdsObject(JSContext *cx, uintN arg
+ return JS_TRUE;
+ }
+
+- // root it
+- argv[1] = OBJECT_TO_JSVAL(js_orig_obj);
+-
+ orig_object = self->jsObject2cdsObject(js_orig_obj, self->getProcessedObject());
+ if (orig_object == nil)
+ return JS_TRUE;
diff --git a/debian/patches/series b/debian/patches/series
index 4eafb9d..b3085a5 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -5,3 +5,4 @@ autoreconf_-fi.patch
libav_0.7_support.patch
gcc_4.6_support.patch
js_1.8_support.patch
+js_parse.patch
--
MediaTomb packaging
More information about the pkg-multimedia-commits
mailing list