aboutsummaryrefslogtreecommitdiffstats
path: root/awk.h
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2017-04-04 21:53:44 +0300
committerArnold D. Robbins <arnold@skeeve.com>2017-04-04 21:53:44 +0300
commit070c57daec076e780e81d8b1011a02ea8ac8915f (patch)
tree96d4c7747e2f29398b23cdcc550d92f8d4417439 /awk.h
parent4271b995d64430e794e344f0c4985162eb991052 (diff)
downloadegawk-070c57daec076e780e81d8b1011a02ea8ac8915f.tar.gz
egawk-070c57daec076e780e81d8b1011a02ea8ac8915f.tar.bz2
egawk-070c57daec076e780e81d8b1011a02ea8ac8915f.zip
fixes for memory leak for user-supplied sorting function.
Diffstat (limited to 'awk.h')
-rw-r--r--awk.h9
1 files changed, 8 insertions, 1 deletions
diff --git a/awk.h b/awk.h
index c1e9b4a9..6b7cdb7a 100644
--- a/awk.h
+++ b/awk.h
@@ -783,6 +783,7 @@ typedef struct exp_instruction {
} x;
short source_line;
+ short pool_size; // memory management in symbol.c
OPCODE opcode;
} INSTRUCTION;
@@ -1031,9 +1032,15 @@ typedef struct srcfile {
int lasttok;
} SRCFILE;
+// structure for INSTRUCTION pool, needed mainly for debugger
+typedef struct instruction_pool {
+#define MAX_INSTRUCTION_ALLOC 3 // we don't call bcalloc with more than this
+ INSTRUCTION pool[MAX_INSTRUCTION_ALLOC + 1];
+} INSTRUCTION_POOL;
+
/* structure for execution context */
typedef struct context {
- INSTRUCTION pools;
+ INSTRUCTION_POOL pools;
NODE symbols;
INSTRUCTION rule_list;
SRCFILE srcfiles;