From 7b3c680da506bd5039ec9d2ecb938625fa6189fc Mon Sep 17 00:00:00 2001 From: Xavi Artigas Date: Tue, 4 Sep 2012 17:10:40 +0200 Subject: [PATCH] Better memory management during string construction --- .../tutorials/android-tutorial-1/jni/tutorial-1.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/gst-sdk/tutorials/android-tutorial-1/jni/tutorial-1.c b/gst-sdk/tutorials/android-tutorial-1/jni/tutorial-1.c index 44806f9..c95a78e 100755 --- a/gst-sdk/tutorials/android-tutorial-1/jni/tutorial-1.c +++ b/gst-sdk/tutorials/android-tutorial-1/jni/tutorial-1.c @@ -22,32 +22,35 @@ jstring Java_com_gst_1sdk_1tutorials_tutorial_11_Tutorial1_gstVersion (JNIEnv* env, jobject thiz ) { - char buffer[8192] = ""; + jstring ret; + char *buffer, *tmp; GList *original_plugin_list = gst_registry_get_plugin_list (gst_registry_get_default()); GList *plugin_list = original_plugin_list; - g_strlcat (buffer, gst_version_string(), sizeof (buffer)); - g_strlcat (buffer, "\n", sizeof (buffer)); + buffer = g_strdup_printf ("Version: %s\n", gst_version_string()); while (plugin_list) { GstPlugin *plugin = (GstPlugin *)plugin_list->data; GList *original_features_list, *features_list; plugin_list = plugin_list->next; - g_strlcat (buffer, gst_plugin_get_name (plugin), sizeof (buffer)); - g_strlcat (buffer, "\n", sizeof (buffer)); + tmp = g_strdup_printf ("%sPlugin: %s\n", buffer, gst_plugin_get_name (plugin)); + g_free (buffer); + buffer = tmp; original_features_list = features_list = gst_registry_get_feature_list_by_plugin (gst_registry_get_default(), plugin->desc.name); while (features_list) { GstPluginFeature *feature = (GstPluginFeature *)features_list->data; features_list = features_list->next; - g_strlcat (buffer, " ", sizeof (buffer)); - g_strlcat (buffer, gst_plugin_feature_get_name (feature), sizeof (buffer)); - g_strlcat (buffer, "\n", sizeof (buffer)); + tmp = g_strdup_printf ("%s %s\n", buffer, gst_plugin_feature_get_name (feature)); + g_free (buffer); + buffer = tmp; } gst_plugin_feature_list_free (original_features_list); } gst_plugin_list_free (original_plugin_list); - return (*env)->NewStringUTF(env, buffer); + ret = (*env)->NewStringUTF(env, buffer); + g_free (buffer); + return ret; } -- 2.7.4