summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOlly Betts <olly@survex.com>2023-04-19 14:52:40 +1200
committerOlly Betts <olly@survex.com>2023-04-19 14:52:40 +1200
commit043bdf567756e6a30dd1e62bef10607d28a3db91 (patch)
tree5ff5c55deb5bc0d814a60127005233369bac2ddf
parent6e54f3b6c402e3710e14b57e0a9978177fce50dc (diff)
downloadswig-043bdf567756e6a30dd1e62bef10607d28a3db91.tar.gz
Copy over missing parts of macro expansion code
We need to insert newlines for a multi-line macro invocation, and we shouldn't leak memory.
-rw-r--r--Source/Preprocessor/cpp.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/Source/Preprocessor/cpp.c b/Source/Preprocessor/cpp.c
index b9ce54361..55058fc13 100644
--- a/Source/Preprocessor/cpp.c
+++ b/Source/Preprocessor/cpp.c
@@ -1297,9 +1297,14 @@ static DOH *Preprocessor_replace(DOH *s, DOH *line_file) {
args = 0;
}
e = expand_macro(id, args, s);
- if (e)
+ if (e) {
Append(ns, e);
+ }
+ while (macro_additional_lines--) {
+ Putc('\n', ns);
+ }
Delete(e);
+ Delete(args);
} else {
Append(ns, id);
}