Don't use ARG_MAX. (#522335, patch by Sebastian Dröge)
authorMatthias Clasen <mclasen@redhat.com>
Mon, 31 Mar 2008 04:22:55 +0000 (04:22 +0000)
committerMatthias Clasen <matthiasc@src.gnome.org>
Mon, 31 Mar 2008 04:22:55 +0000 (04:22 +0000)
2008-03-30  Matthias Clasen  <mclasen@redhat.com>

        * glib/gtester.c: Don't use ARG_MAX.  (#522335, patch by
        Sebastian Dröge)

svn path=/trunk/; revision=6782

ChangeLog
glib/gtester.c

index 92bfde8fe82ab583e086e954735f169ac2c3d7b3..e81e33d1f94834f9ca576f0136fa5d4f87d904b9 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2008-03-30  Matthias Clasen  <mclasen@redhat.com>
+
+       * glib/gtester.c: Don't use ARG_MAX.  (#522335, patch by 
+       Sebastian Dröge)
+
 2008-03-30  Matthias Clasen  <mclasen@redhat.com>
 
        * glib/gmacros.h: Add macros wrapping the gcc alloc_size 
index 8fae5a137d48fda77598608c348d55a5d87971cb..03549d9c38dce7e24653107af5140ce2f95ea6cf 100644 (file)
@@ -273,7 +273,8 @@ launch_test_binary (const char *binary,
   GTestLogBuffer *tlb;
   GSList *slist, *free_list = NULL;
   GError *error = NULL;
-  const gchar *argv[ARG_MAX];
+  int argc = 0;
+  const gchar **argv;
   GPid pid = 0;
   gint report_pipe[2] = { -1, -1 };
   guint child_report_cb_id = 0;
@@ -289,7 +290,34 @@ launch_test_binary (const char *binary,
       return FALSE;
     }
 
+  /* setup argc */
+  for (slist = subtest_args; slist; slist = slist->next)
+    argc++;
+  /* argc++; */
+  if (subtest_quiet)
+    argc++;
+  if (subtest_verbose)
+    argc++;
+  if (!subtest_mode_fatal)
+    argc++;
+  if (subtest_mode_quick)
+    argc++;
+  else
+    argc++;
+  if (subtest_mode_perf)
+    argc++;
+  if (gtester_list_tests)
+    argc++;
+  if (subtest_seedstr)
+    argc++;
+  argc++;
+  if (skip_tests)
+    argc++;
+  for (slist = subtest_paths; slist; slist = slist->next)
+    argc++;
+
   /* setup argv */
+  argv = g_malloc ((argc + 1) * sizeof(gchar *));
   argv[i++] = binary;
   for (slist = subtest_args; slist; slist = slist->next)
     argv[i++] = (gchar*) slist->data;
@@ -343,8 +371,10 @@ launch_test_binary (const char *binary,
       else
         g_warning ("Failed to execute test binary: %s: %s", argv[0], error->message);
       g_clear_error (&error);
+      g_free (argv);
       return FALSE;
     }
+  g_free (argv);
 
   subtest_running = TRUE;
   subtest_io_pending = TRUE;