d_print_init (&dpi, callback, opaque, dc);
{
+#if 0 /* in valgrind */
#ifdef CP_DYNAMIC_ARRAYS
__extension__ struct d_saved_scope scopes[dpi.num_saved_scopes ?: 1];
__extension__ struct d_print_template temps[dpi.num_copy_templates ?: 1];
dpi.copy_templates = alloca (dpi.num_copy_templates
* sizeof (*dpi.copy_templates));
#endif
-
+#else
+ /* Allocate memory dynamically to avoid VLAs as valgrind stack
+ is a scarce resource */
+ dpi.saved_scopes = xmalloc(dpi.num_saved_scopes
+ * sizeof (*dpi.saved_scopes));
+ dpi.copy_templates = xmalloc (dpi.num_copy_templates
+ * sizeof (*dpi.copy_templates));
+#endif /* ! in valgrind */
d_print_comp (&dpi, options, dc);
}
d_print_flush (&dpi);
- return ! d_print_saw_error (&dpi);
+ int status = ! d_print_saw_error (&dpi);
+
+#if 0 /* in valgrind */
+#else
+ free (dpi.saved_scopes);
+ free (dpi.copy_templates);
+#endif /* in valgrind */
+
+ return status;
}
/* Turn components into a human readable string. OPTIONS is the
cplus_demangle_init_info (mangled, options, strlen (mangled), &di);
{
+#if 0 /* in valgrind */
#ifdef CP_DYNAMIC_ARRAYS
__extension__ struct demangle_component comps[di.num_comps];
__extension__ struct demangle_component *subs[di.num_subs];
di.comps = alloca (di.num_comps * sizeof (*di.comps));
di.subs = alloca (di.num_subs * sizeof (*di.subs));
#endif
+#else
+ /* Allocate memory dynamically to avoid VLAs as valgrind stack
+ is a scarce resource */
+ di.comps = xmalloc (di.num_comps * sizeof (*di.comps));
+ di.subs = xmalloc (di.num_subs * sizeof (*di.subs));
+#endif /* ! in valgrind */
switch (type)
{
: 0;
}
+#if 0 /* in valgrind */
+#else
+ free (di.comps);
+ free (di.subs);
+#endif /* in valgrind */
+
return status;
}
cplus_demangle_init_info (mangled, DMGL_GNU_V3, strlen (mangled), &di);
{
+#if 0 /* in valgrind */
#ifdef CP_DYNAMIC_ARRAYS
__extension__ struct demangle_component comps[di.num_comps];
__extension__ struct demangle_component *subs[di.num_subs];
di.comps = alloca (di.num_comps * sizeof (*di.comps));
di.subs = alloca (di.num_subs * sizeof (*di.subs));
#endif
-
+#else
+ /* Allocate memory dynamically to avoid VLAs as valgrind stack
+ is a scarce resource */
+ di.comps = xmalloc (di.num_comps * sizeof (*di.comps));
+ di.subs = xmalloc (di.num_subs * sizeof (*di.subs));
+#endif /* ! in valgrind */
dc = cplus_demangle_mangled_name (&di, 1);
/* Note that because we did not pass DMGL_PARAMS, we don't expect
}
}
+#if 0 /* in valgrind */
+#else
+ free (di.comps);
+ free (di.subs);
+#endif /* in valgrind */
+
return ret;
}