[Bug 655319] New: compilation error of gst-plugins0.10-bad-0.10.22 [WITH PATCH]

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Tue Jul 26 02:08:26 PDT 2011


https://bugzilla.gnome.org/show_bug.cgi?id=655319
  GStreamer | gst-plugins-bad | 0.10.22

           Summary: compilation error of gst-plugins0.10-bad-0.10.22 [WITH
                    PATCH]
    Classification: Platform
           Product: GStreamer
           Version: 0.10.22
        OS/Version: NetBSD
            Status: UNCONFIRMED
          Severity: normal
          Priority: Normal
         Component: gst-plugins-bad
        AssignedTo: gstreamer-bugs at lists.freedesktop.org
        ReportedBy: rhialto at azenomei.knuffel.net
         QAContact: gstreamer-bugs at lists.freedesktop.org
     GNOME version: ---


See also short mail thread starting at
http://mail-index.netbsd.org/pkgsrc-users/2011/07/15/msg014690.html. Below is
the mail with the short version of the issue and the solution I found.

On Fri 15 Jul 2011 at 17:54:27 +0200, Rhialto wrote:
> I'm compiling my bulk of updated stuff for the new pkgsrc-2011Q2 branch,
> using a pkg_comp chroot with a 5.0 userland.
> 
> With multimedia/gst-plugins0.10-bad I see a failure like this:

I've had some time to look into this more.

>   CC     libgstfragmented_la-gsthlsdemux.lo
> gsthlsdemux.c: In function 'gst_hls_demux_sink_event':
> gsthlsdemux.c:373: error: expected expression before 'void'
...

> The lines with errors look like this:

> ->  373         GST_ELEMENT_ERROR (demux, STREAM, DECODE, ("Invalid 
> playlist."),
>  NULL);

The 5th (last) argument to the GST_ELEMENT_ERROR macro, called debug, is
NULL.

> GST_ELEMENT_ERROR is defined in
> ./.buildlink/include/gstreamer-0.10/gst/gstelement.h:
> 
> /**
>  * GST_ELEMENT_ERROR:
>  * @el:     the element that generates the error
>  * @domain: like CORE, LIBRARY, RESOURCE or STREAM (see #gstreamer-GstGError)
>  * @code:   error code defined for that domain (see #gstreamer-GstGError)
>  * @text:   the message to display (format string and args enclosed in
>             parentheses)
>  * @debug:  debugging information for the message (format string and args
>             enclosed in parentheses)
>  * 
>  * Utility function that elements can use in case they encountered a fatal
>  * data processing error. The pipeline will post an error message and the
>  * application will be requested to stop further media processing.
>  */
> #define GST_ELEMENT_ERROR(el, domain, code, text, debug)                \
> G_STMT_START {                                                          \
>   gchar *__txt = _gst_element_error_printf text;                        \
>   gchar *__dbg = _gst_element_error_printf debug;                       \

This expands to gchar *__dbg = _gst_element_error_printf (void)0;

That is indeed a syntax error. 

The argument should be inside an extra pair of parentheses, like the
previous argument, text. Even the doc text I quoted mentions it,
in fact.

So, now the solution becomes simple: add this patch:


--- gst/hls/gsthlsdemux.c.orig  2011-07-25 14:52:33.000000000 +0000
+++ gst/hls/gsthlsdemux.c       2011-07-25 14:53:51.000000000 +0000
@@ -370,14 +370,14 @@
         /* In most cases, this will happen if we set a wrong url in the
          * source element and we have received the 404 HTML response instead
of
          * the playlist */
-        GST_ELEMENT_ERROR (demux, STREAM, DECODE, ("Invalid playlist."),
NULL);
+        GST_ELEMENT_ERROR (demux, STREAM, DECODE, ("Invalid playlist."), 
(NULL));
         return FALSE;
       }

       if (!ret && gst_m3u8_client_is_live (demux->client)) {
         GST_ELEMENT_ERROR (demux, RESOURCE, NOT_FOUND,
             ("Failed querying the playlist uri, "
-                "required for live sources."), NULL);
+                "required for live sources."), (NULL));
         return FALSE;
       }

@@ -605,7 +605,7 @@
 cache_error:
   {
     GST_ELEMENT_ERROR (demux, RESOURCE, NOT_FOUND,
-        ("Could not cache the first fragments"), NULL);
+        ("Could not cache the first fragments"), (NULL));
     gst_hls_demux_stop (demux);
     return;
   }
@@ -868,7 +868,7 @@
 state_change_error:
   {
     GST_ELEMENT_ERROR (demux, CORE, STATE_CHANGE,
-        ("Error changing state of the fetcher element."), NULL);
+        ("Error changing state of the fetcher element."), (NULL));
     bret = FALSE;
     goto quit;
   }


What I don't understand is this: This code obviously can't compile. I checked
the git versions, and apparently they have not changed. Yet I have not been
able to find other complaints about this, which suggests that there is no
problem. How to reconcile these views?

-- 
Configure bugmail: https://bugzilla.gnome.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.


More information about the gstreamer-bugs mailing list