From 0b554f5d5a37754060b24f4e31748addf9a3baf1 Mon Sep 17 00:00:00 2001 From: Gurucharan Shetty Date: Wed, 11 Dec 2013 15:55:03 -0800 Subject: [PATCH] ovs-thread: Break recursion for coverage counters. For systems that do not have either HAVE_THREAD_LOCAL or HAVE___THREAD (ex: windows using MSVC), a COVERAGE_INC() calls xmalloc which inturn calls COVERAGE_INC() creating a recursion that causes a stack overflow. This commit breaks the recursion by calling malloc() instead of xmalloc(). Signed-off-by: Gurucharan Shetty Acked-by: Ben Pfaff --- lib/ovs-thread.h | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/ovs-thread.h b/lib/ovs-thread.h index c6a714269..1f2de72c8 100644 --- a/lib/ovs-thread.h +++ b/lib/ovs-thread.h @@ -276,7 +276,10 @@ void xpthread_join(pthread_t, void **); if (!value) { \ static const NAME##_type initial_value = __VA_ARGS__; \ \ - value = xmalloc(sizeof *value); \ + value = malloc(sizeof *value); \ + if (value == NULL) { \ + out_of_memory(); \ + } \ *value = initial_value; \ xpthread_setspecific(NAME##_key, value); \ } \ @@ -313,7 +316,10 @@ void xpthread_join(pthread_t, void **); if (!value) { \ static const NAME##_type initial_value = __VA_ARGS__; \ \ - value = xmalloc(sizeof *value); \ + value = malloc(sizeof *value); \ + if (value == NULL) { \ + out_of_memory(); \ + } \ *value = initial_value; \ xpthread_setspecific(NAME##_key, value); \ } \ -- 2.43.0