aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPaul Eggert2020-08-26 00:07:08 -0700
committerPaul Eggert2020-08-26 00:20:31 -0700
commitbd5771ff27dbbb2b09cc7c14f1ac040234285acc (patch)
tree3a1fc95feed46fd6557397b92d5c05773c13c294 /src
parent4c0a9754ace421461d648b911da6d5eec49e9a62 (diff)
downloademacs-bd5771ff27dbbb2b09cc7c14f1ac040234285acc.tar.gz
emacs-bd5771ff27dbbb2b09cc7c14f1ac040234285acc.zip
regex-emacs: fix leak on memory allocation failure
* src/regex-emacs.c (ENSURE_FAIL_STACK): If the failure stack cannot be grown, free locally-allocated storage before returning.
Diffstat (limited to 'src')
-rw-r--r--src/regex-emacs.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/regex-emacs.c b/src/regex-emacs.c
index 5d1bb094d53..3d8aaf4bb13 100644
--- a/src/regex-emacs.c
+++ b/src/regex-emacs.c
@@ -969,7 +969,11 @@ typedef struct
969#define ENSURE_FAIL_STACK(space) \ 969#define ENSURE_FAIL_STACK(space) \
970while (REMAINING_AVAIL_SLOTS <= space) { \ 970while (REMAINING_AVAIL_SLOTS <= space) { \
971 if (!GROW_FAIL_STACK (fail_stack)) \ 971 if (!GROW_FAIL_STACK (fail_stack)) \
972 return -2; \ 972 { \
973 unbind_to (count, Qnil); \
974 SAFE_FREE (); \
975 return -2; \
976 } \
973 DEBUG_PRINT ("\n Doubled stack; size now: %td\n", fail_stack.size); \ 977 DEBUG_PRINT ("\n Doubled stack; size now: %td\n", fail_stack.size); \
974 DEBUG_PRINT (" slots available: %td\n", REMAINING_AVAIL_SLOTS);\ 978 DEBUG_PRINT (" slots available: %td\n", REMAINING_AVAIL_SLOTS);\
975} 979}