opuscommon: Use GString instead of snprintf for concating
authorNirbheek Chauhan <nirbheek@centricular.com>
Mon, 27 Jul 2015 13:09:13 +0000 (18:39 +0530)
committerTim-Philipp Müller <tim@centricular.com>
Mon, 27 Jul 2015 14:24:19 +0000 (15:24 +0100)
Safer, easier to understand, and more portable. Also, skip
all this if the log level is too low.

ext/opus/gstopuscommon.c

index 227d44a..febccd8 100644 (file)
@@ -94,13 +94,18 @@ gst_opus_common_log_channel_mapping_table (GstElement * element,
     GstDebugCategory * category, const char *msg, int n_channels,
     const guint8 * table)
 {
-  char s[8 + 256 * 4] = "[ ";   /* enough for 256 times "255 " at most */
   int n;
+  GString *s;
 
+  if (gst_debug_category_get_threshold (category) < GST_LEVEL_INFO)
+    return;
+
+  s = g_string_new ("[ ");
   for (n = 0; n < n_channels; ++n) {
-    size_t len = strlen (s);
-    snprintf (s + len, sizeof (s) - len, "%d ", table[n]);
+    g_string_append_printf (s, "%d ", table[n]);
   }
-  strcat (s, "]");
-  GST_CAT_LEVEL_LOG (category, GST_LEVEL_INFO, element, "%s: %s", msg, s);
+  g_string_append (s, "]");
+
+  GST_CAT_LEVEL_LOG (category, GST_LEVEL_INFO, element, "%s: %s", msg, s->str);
+  g_string_free (s, TRUE);
 }