Code

src/{collectd.h,perl.c}: Poison sprintf after perl.h has been included.
authorFlorian Forster <octo@noris.net>
Mon, 14 Jul 2008 13:47:02 +0000 (15:47 +0200)
committerFlorian Forster <octo@noris.net>
Mon, 14 Jul 2008 13:47:02 +0000 (15:47 +0200)
src/collectd.h
src/perl.c

index d316e5f978fba38fc98e183bcbe8a96af70bd474..eece4203894b1a51786446b6787fba77f152d944 100644 (file)
 #endif
 
 #if __GNUC__
-# pragma GCC poison strcpy strcat sprintf strtok
+# pragma GCC poison strcpy strcat strtok
+#endif
+
+/* 
+ * Special hack for the perl plugin: Because the later included perl.h defines
+ * a macro which is never used, but contains `sprintf', we cannot poison that
+ * identifies just yet. The parl plugin will do that itself once perl.h is
+ * included.
+ */
+#ifndef DONT_POISON_SPRINTF_YET
+# if __GNUC__
+#  pragma GCC poison sprintf
+# endif
 #endif
 
 extern char hostname_g[];
index 22a13cee6cabe524a4b08185f1e68a9c2be93221..9cbd5937574fd453d3c2634ce1e796005d8a8368 100644 (file)
 /* do not automatically get the thread specific perl interpreter */
 #define PERL_NO_GET_CONTEXT
 
+#define DONT_POISON_SPRINTF_YET 1
 #include "collectd.h"
+#undef DONT_POISON_SPRINTF_YET
 
 #include "configfile.h"
 
 #include <EXTERN.h>
 #include <perl.h>
 
+#if __GNUC__
+# pragma GCC poison sprintf
+#endif
+
 #include <XSUB.h>
 
 /* Some versions of Perl define their own version of DEBUG... :-/ */