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

Re: compctl-related core dump



Xris Laas wrote:
> On 27 Feb, John Harres wrote:
> > While working on another odd command's compctl, I got a core dump out of 
> > 3.0.2.  First, the compctl:
> > 
> >    compctl -x 's[-]' -k '(logical physical server database contents object 
> as 
> > type dependencies from stripe incremental stripe replace copyover merge 
> > no_replace no_index indexfile sql_insert charset audits no_audits no_data 
> > data_only merge no_segments on_segment cache no_cache on_index_segment 
> > on_text_segment interfaces user password sybasedump masterinfo bcp_batch_si
> ze 
> > db_refs dryrun code verbose no_prompt no_status quiet debug)' - \
> > 'c[-1,from][-1,stripe][-1.indexfile][-1,interfaces][-1,sybasedump][-1,maste
> rinf
> > o]' -f -- dtsload
> 
> The problem isn't that there's nothing defined for that case.  The
> problem is merely compctl syntax in the line:
> 
> > 'c[-1,from][-1,stripe][-1.indexfile][-1,interfaces][-1,sybasedump][-1,maste
> rinf
>                         ^^^^^^^^^^^^^^
> Change that to "[-1,indexfile]" .

The test in zsh is insufficient when the incorrect condition has
another bracketed expression after it:  it finds the next comma after
and doesn't realise it's gone too far.  This fixes it (for 3.1.1, it
will apply to 3.0.x if you can find the file with get_xcompctl() in
it).

*** Src/Zle/compctl.c.bug	Sun Jan  5 22:07:31 1997
--- Src/Zle/compctl.c	Fri Feb 28 11:11:14 1997
***************
*** 598,605 ****
  		    c->u.l.b[l] = ztrdup(tt);
  		} else {
  		    /* remaining patterns are number followed by string */
! 		    for (; *t && *t != '\201'; t++);
! 		    if (!*t) {
  			zwarnnam(name, "error in condition", NULL, 0);
  			freecompcond(m);
  			return 1;
--- 598,605 ----
  		    c->u.l.b[l] = ztrdup(tt);
  		} else {
  		    /* remaining patterns are number followed by string */
! 		    for (; *t && *t != '\200' && *t != '\201'; t++);
! 		    if (!*t || *t == '\200') {
  			zwarnnam(name, "error in condition", NULL, 0);
  			freecompcond(m);
  			return 1;

-- 
Peter Stephenson <pws@xxxxxx>       Tel: +49 33762 77366
WWW:  http://www.ifh.de/~pws/       Fax: +49 33762 77413
Deutsches Elektronen-Synchrotron --- Institut fuer Hochenergiephysik Zeuthen
DESY-IfH, 15735 Zeuthen, Germany.



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