[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