From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 16939 invoked by alias); 22 Mar 2015 19:18:26 -0000 Mailing-List: contact zsh-workers-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Workers List List-Post: List-Help: X-Seq: 34759 Received: (qmail 2881 invoked from network); 22 Mar 2015 19:18:24 -0000 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.2 X-Originating-IP: [80.3.228.158] X-Spam: 0 X-Authority: v=2.1 cv=UrbtNoAB c=1 sm=1 tr=0 a=P+FLVI8RzFchTbbqTxIDRw==:117 a=P+FLVI8RzFchTbbqTxIDRw==:17 a=kj9zAlcOel0A:10 a=NLZqzBF-AAAA:8 a=-yLYL8ZDQ2wdQo4EQnkA:9 a=CjuIK1q_8ugA:10 Date: Sun, 22 Mar 2015 19:18:18 +0000 From: Peter Stephenson To: "Zsh Hackers' List" Subject: Re: capturing output of !! not working Message-ID: <20150322191818.7dcbba58@ntlworld.com> In-Reply-To: <20150322183556.1fa0f143@ntlworld.com> References: <20150319105716.620cd931@pwslap01u.europe.root.pri> <20150319125351.1e270c2d@pwslap01u.europe.root.pri> <20150320105703.2754b6af@pwslap01u.europe.root.pri> <150320090420.ZM21908@torch.brasslantern.com> <20150322183556.1fa0f143@ntlworld.com> MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit On Sun, 22 Mar 2015 18:35:56 +0000 Peter Stephenson wrote: > +/**/ > +char * > +zshlex_raw_mark(int offset) > +{ > + if (!lex_add_raw) > + return NULL; > + return lexbuf_raw.ptr + offset; > +} > + > +/**/ > +void > +zshlex_raw_back_to_mark(char *mark) > +{ > + if (!lex_add_raw) > + return; > + lexbuf_raw.len -= lexbuf_raw.ptr - mark; > + lexbuf_raw.ptr = mark; > +} > + It may have been reallocated... this is safer. diff --git a/Src/hist.c b/Src/hist.c index 70dfac0..b44f4ad 100644 --- a/Src/hist.c +++ b/Src/hist.c @@ -527,7 +527,8 @@ histsubchar(int c) static int marg = -1; static zlong mev = -1; char *buf, *ptr; - char *sline, *lexraw_mark; + char *sline; + int lexraw_mark; Histent ehist; size_t buflen; diff --git a/Src/lex.c b/Src/lex.c index 6b9e942..6d0079c 100644 --- a/Src/lex.c +++ b/Src/lex.c @@ -1872,22 +1872,22 @@ zshlex_raw_back(void) } /**/ -char * +int zshlex_raw_mark(int offset) { if (!lex_add_raw) - return NULL; - return lexbuf_raw.ptr + offset; + return 0; + return lexbuf_raw.len + offset; } /**/ void -zshlex_raw_back_to_mark(char *mark) +zshlex_raw_back_to_mark(int mark) { if (!lex_add_raw) return; - lexbuf_raw.len -= lexbuf_raw.ptr - mark; - lexbuf_raw.ptr = mark; + lexbuf_raw.ptr = tokstr_raw + mark; + lexbuf_raw.len = mark; } /*