X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Frrd_thread_safe_nt.c;h=a23a486a94cafeb57d0280a3bb3e7d89e29acd7e;hb=91b2f1022a195d008d818f283690ef63a00fd79c;hp=caccceb1b16157b0b3dc595e9268088becf1d572;hpb=17d11091c4df387ec01f0fce611cca5e3117a5d7;p=pkg-rrdtool.git diff --git a/src/rrd_thread_safe_nt.c b/src/rrd_thread_safe_nt.c index caccceb..a23a486 100644 --- a/src/rrd_thread_safe_nt.c +++ b/src/rrd_thread_safe_nt.c @@ -1,5 +1,5 @@ /***************************************************************************** - * RRDtool 1.3.1 Copyright by Tobi Oetiker, 1997-2008 + * RRDtool 1.4.2 Copyright by Tobi Oetiker, 1997-2009 * This file: Copyright 2003 Peter Stamfest * & Tobias Oetiker * Distributed under the GPL @@ -7,7 +7,7 @@ * rrd_thread_safe.c Contains routines used when thread safety is required * for win32 ***************************************************************************** - * $Id: rrd_thread_safe_nt.c 1447 2008-07-23 13:02:26Z oetiker $ + * $Id: rrd_thread_safe_nt.c 1970 2009-11-15 11:54:23Z oetiker $ *************************************************************************** */ #include @@ -38,7 +38,7 @@ static void context_destroy_context( static void context_init_context( void) { - if (!InterlockedExchange(&context_key_once, 1)) { + if (!InterlockedExchange((LONG*)(&context_key_once), 1)) { context_key = TlsAlloc(); InitializeCriticalSection(&CriticalSection); atexit(context_destroy_context); @@ -51,7 +51,7 @@ rrd_context_t *rrd_get_context( context_init_context(); - ctx = TlsGetValue(context_key); + ctx = (rrd_context_t*)TlsGetValue(context_key); if (!ctx) { ctx = rrd_new_context(); TlsSetValue(context_key, ctx); @@ -59,6 +59,23 @@ rrd_context_t *rrd_get_context( return ctx; } + +/* this was added by the win32 porters Christof.Wegmann@exitgames.com */ + +rrd_context_t *rrd_force_new_context( + void) +{ + rrd_context_t *ctx; + + context_init_context(); + + ctx = rrd_new_context(); + TlsSetValue(context_key, ctx); + + return ctx; +} + + #undef strerror const char *rrd_strerror( int err)