zsh-workers
 help / color / mirror / code / Atom feed
* PATCH: recursive globs with e qualifier hangs the shell
@ 2005-06-08 13:53 Oliver Kiddle
  0 siblings, 0 replies; only message in thread
From: Oliver Kiddle @ 2005-06-08 13:53 UTC (permalink / raw)
  To: Zsh workers

To reproduce, you can use something like this:
  print **/*(e:print **/*:)

It hangs because addpath in glob.c is called with pathbufsz zero. It
then goes into a while loop doing pathbufsz *= 2, never exiting because
pathbufsz never increases.

It is set to zero in save_globstate which seems like a strange thing to
do. Surely it should save the actual value instead of zero. Perhaps the
original intention was to set pathbufsz instead of (N).gd_pathbufsz to
zero. The patch below appears to fix it and I can't see any problem with
it. This isn't the first time we've had problems with that glob state
saving and I suspect it won't be the last. I've also included a test.

Oliver

Index: Src/glob.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/glob.c,v
retrieving revision 1.41
diff -u -r1.41 glob.c
--- Src/glob.c  24 Apr 2005 18:38:38 -0000      1.41
+++ Src/glob.c  8 Jun 2005 13:28:33 -0000
@@ -180,7 +180,6 @@
     memcpy(&(N), &curglobdata, sizeof(struct globdata)); \
     (N).gd_pathpos = pathpos; \
     (N).gd_pathbuf = pathbuf; \
-    (N).gd_pathbufsz = 0; \
     (N).gd_glob_pre = glob_pre; \
     (N).gd_glob_suf = glob_suf; \
     pathbuf = NULL; \
Index: Test/D02glob.ztst
===================================================================
RCS file: /cvsroot/zsh/zsh/Test/D02glob.ztst,v
retrieving revision 1.10
diff -u -r1.10 D02glob.ztst
--- Test/D02glob.ztst   9 May 2005 10:46:15 -0000       1.10
+++ Test/D02glob.ztst   8 Jun 2005 13:28:33 -0000
@@ -280,6 +280,10 @@
 0:Globbing used recursively (inside e glob qualifier)
 >a a b b c c
 
+ print glob.tmp/*/*(e:'reply=( glob.tmp/**/*([1]) )'::t)
+0:Recursive globbing used recursively (inside e glob qualifier)
+>a a a a a a a
+
  print glob.tmp/**/(:h) 
 0:Head modifier
 >. glob.tmp glob.tmp glob.tmp glob.tmp glob.tmp/dir3


This e-mail and any attachment is for authorised use by the intended recipient(s) only. It may contain proprietary material, confidential information and/or be subject to legal privilege. It should not be copied, disclosed to, retained or used by, any other party. If you are not an intended recipient then please promptly delete this e-mail and any attachment and all copies and inform the sender. Thank you.


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2005-06-08 13:54 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-06-08 13:53 PATCH: recursive globs with e qualifier hangs the shell Oliver Kiddle

Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).