Slightly reduced stack space needed when reporting a data race.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@7835 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/exp-drd/drd_error.c b/exp-drd/drd_error.c
index 8851f61..ac496f0 100644
--- a/exp-drd/drd_error.c
+++ b/exp-drd/drd_error.c
@@ -35,6 +35,7 @@
#include "pub_tool_libcfile.h" // VG_(get_startup_wd)()
#include "pub_tool_libcprint.h" // VG_(printf)()
#include "pub_tool_machine.h"
+#include "pub_tool_mallocfree.h" // VG_(malloc), VG_(free)
#include "pub_tool_threadstate.h" // VG_(get_pthread_id)()
#include "pub_tool_tooliface.h" // VG_(needs_tool_errors)()
@@ -71,8 +72,9 @@
void drd_report_data_race2(Error* const err, const DataRaceErrInfo* const dri)
{
AddrInfo ai;
- Char descr1[256];
- Char descr2[256];
+ const unsigned descr_size = 256;
+ Char* descr1 = VG_(malloc)(descr_size);
+ Char* descr2 = VG_(malloc)(descr_size);
tl_assert(dri);
tl_assert(dri->addr);
@@ -80,7 +82,7 @@
descr1[0] = 0;
descr2[0] = 0;
- VG_(get_data_description)(descr1, descr2, sizeof(descr1), dri->addr);
+ VG_(get_data_description)(descr1, descr2, descr_size, dri->addr);
if (descr1[0] == 0)
{
describe_malloced_addr(dri->addr, dri->size, &ai);
@@ -115,6 +117,9 @@
thread_report_conflicting_segments(dri->tid,
dri->addr, dri->size, dri->access_type);
}
+
+ VG_(free)(descr2);
+ VG_(free)(descr1);
}
static Bool drd_tool_error_eq(VgRes res, Error* e1, Error* e2)