36 lines
1.1 KiB
Diff
36 lines
1.1 KiB
Diff
|
Index: rrdtool/src/rrd_not_thread_safe.c
|
||
|
===================================================================
|
||
|
--- rrdtool/src/rrd_not_thread_safe.c (revision 860)
|
||
|
+++ rrdtool/src/rrd_not_thread_safe.c (revision 935)
|
||
|
@@ -15,18 +15,24 @@
|
||
|
#define ERRBUFLEN 256
|
||
|
|
||
|
-static char rrd_error[MAXLEN] = "\0";
|
||
|
-static char rrd_liberror[ERRBUFLEN] = "\0";
|
||
|
+static char rrd_error[MAXLEN+10];
|
||
|
+static char rrd_liberror[ERRBUFLEN+10];
|
||
|
+static int rrd_context_init = 0;
|
||
|
/* The global context is very useful in the transition period to even
|
||
|
more thread-safe stuff, it can be used whereever we need a context
|
||
|
and do not need to worry about concurrency. */
|
||
|
static struct rrd_context global_ctx = {
|
||
|
- sizeof(rrd_error),
|
||
|
- sizeof(rrd_liberror),
|
||
|
+ MAXLEN,
|
||
|
+ ERRBUFLEN,
|
||
|
rrd_error,
|
||
|
rrd_liberror
|
||
|
};
|
||
|
-#include <stdarg.h>
|
||
|
+/* #include <stdarg.h> */
|
||
|
|
||
|
-struct rrd_context *rrd_get_context() {
|
||
|
+struct rrd_context *rrd_get_context(void) {
|
||
|
+ if (! rrd_context_init ){
|
||
|
+ rrd_context_init = 1;
|
||
|
+ global_ctx.rrd_error[0]='\0';
|
||
|
+ global_ctx.lib_errstr[0]='\0';
|
||
|
+ }
|
||
|
return &global_ctx;
|
||
|
}
|