summaryrefslogtreecommitdiff
path: root/fluid/code.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'fluid/code.cxx')
-rw-r--r--fluid/code.cxx19
1 files changed, 19 insertions, 0 deletions
diff --git a/fluid/code.cxx b/fluid/code.cxx
index 597f77ef3..df23e3a75 100644
--- a/fluid/code.cxx
+++ b/fluid/code.cxx
@@ -153,8 +153,18 @@ int write_declare(const char *format, ...) {
////////////////////////////////////////////////////////////////
+// silly thing to prevent declaring unused variables:
+// When this symbol is on, all attempts to write code don't write
+// anything, but set a variable if it looks like the variable "o" is used:
+int varused_test;
+int varused;
+
// write an array of C characters (adds a null):
void write_cstring(const char *w, int length) {
+ if (varused_test) {
+ varused = 1;
+ return;
+ }
const char *e = w+length;
int linelength = 1;
putc('\"', code_file);
@@ -221,6 +231,10 @@ void write_cstring(const char *w) {write_cstring(w,strlen(w));}
// write an array of C binary data (does not add a null):
void write_cdata(const char *s, int length) {
+ if (varused_test) {
+ varused = 1;
+ return;
+ }
const unsigned char *w = (const unsigned char *)s;
const unsigned char *e = w+length;
int linelength = 1;
@@ -238,6 +252,10 @@ void write_cdata(const char *s, int length) {
}
void write_c(const char* format,...) {
+ if (varused_test) {
+ varused = 1;
+ return;
+ }
va_list args;
va_start(args, format);
vfprintf(code_file, format, args);
@@ -245,6 +263,7 @@ void write_c(const char* format,...) {
}
void write_h(const char* format,...) {
+ if (varused_test) return;
va_list args;
va_start(args, format);
vfprintf(header_file, format, args);