diff -Naur -x .svn gst-python-orig/gst/arg-types.py gst-python/gst/arg-types.py
--- gst-python-orig/gst/arg-types.py	2006-12-15 01:38:32.000000000 +0100
+++ gst-python/gst/arg-types.py	2006-12-15 01:38:19.000000000 +0100
@@ -311,7 +311,24 @@
             failure_expression="!PyString_Check(py_retval)",
             failure_cleanup='PyErr_SetString(PyExc_TypeError, "retval should be a string");')
         self.wrapper.write_code("retval = g_strdup(PyString_AsString(py_retval));")
-			
+
+class StringArrayArg(ArgType):
+    def write_return(self, ptype, ownsreturn, info):
+        if ownsreturn:
+            raise NotImplementedError ()
+        else:
+            info.varlist.add("gchar", "**ret")
+            info.codeafter.append("    if (ret) {\n"
+                                  "        guint size = g_strv_length(ret);\n"
+                                  "        PyObject *py_ret = PyList_New(size);\n"
+                                  "        gint i;\n"
+                                  "        for (i = 0; i < size; i++)\n"
+                                  "            PyList_SetItem(py_ret, i,\n"
+                                  "                PyString_FromString(ret[i]));\n"
+                                  "        return py_ret;\n"
+                                  "    }\n"
+                                  "    return PyList_New (0);\n")
+
 matcher.register('GstClockTime', UInt64Arg())
 matcher.register('GstClockTimeDiff', Int64Arg())
 matcher.register('xmlNodePtr', XmlNodeArg())
@@ -347,4 +364,6 @@
 matcher.register_reverse("gulong", ULongParam)
 matcher.register_reverse_ret("gulong", ULongReturn)
 
+matcher.register("gchar**", StringArrayArg())
+
 del arg
diff -Naur -x .svn gst-python-orig/gst/gst.defs gst-python/gst/gst.defs
--- gst-python-orig/gst/gst.defs	2006-12-15 01:38:32.000000000 +0100
+++ gst-python/gst/gst.defs	2006-12-15 01:54:30.000000000 +0100
@@ -6359,10 +6359,12 @@
   (return-type "guint")
 )
 
-(define-virtual get_protocols
-  (of-object "GstURIHandler")
-  (return-type "gchar**")
-)
+;; TODO: tell the code generator that GstURIHandlerInterface.get_protocols
+;; takes no args or write override for this
+;; (define-virtual get_protocols
+;;   (of-object "GstURIHandler")
+;;   (return-type "gchar**")
+;; )
 
 (define-virtual get_uri
   (of-object "GstURIHandler")
