Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: [PATCH] isearch: do not use PAT_STATIC since we call zle hooks

On Sun, 8 Jan 2017, Peter Stephenson wrote:

> On Sun, 8 Jan 2017 11:33:58 -0800
> Bart Schaefer <schaefer@xxxxxxxxxxxxxxxx> wrote:
> > PAT_STATIC already causes the compiled pattern to be placed on the heap,
> > so we could introduce a PAT_HEAPDUP that works like PAT_ZDUP except
> > there would be no need to explicity freepatprog().
> That sounds like a good idea.

Of course I had this wrong -- the pattern is by default in a never-freed
block of zalloc'd memory used by the pattern compiler, and PAT_STATIC
causes it to remain there.  (I misread a "!" in a conditional.)

So PAT_HEAPDUP is already there, it's just (not PAT_STATIC) ... and we
are back to deciding whether each individual use of PAT_STATIC is safe
WRT signals and hooks.

Should we make it explicit anyway?

diff --git a/Src/zsh.h b/Src/zsh.h
index d022260..c387414 100644
--- a/Src/zsh.h
+++ b/Src/zsh.h
@@ -1531,6 +1531,7 @@ struct patstralloc {

 /* Flags used in pattern matchers (Patprog) and passed down to patcompile */

+#define PAT_HEAPDUP	0x0000	/* Dummy flag for default behavior */
 #define PAT_FILE	0x0001	/* Pattern is a file name */
 #define PAT_FILET	0x0002	/* Pattern is top level file, affects ~ */
 #define PAT_ANY		0x0004	   /* Match anything (cheap "*") */

Messages sorted by: Reverse Date, Date, Thread, Author