X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fcql.y;h=20013cb2489577457bacafe6b004c0896e36feb3;hb=3b792849c676d96918850e2f1e0af87a75278501;hp=414feb8b552fb0ac69c13049fe63214c3f0a15a8;hpb=8fc18939a7972d53f8f8c516ac41df0fe595f780;p=yaz-moved-to-github.git diff --git a/src/cql.y b/src/cql.y index 414feb8..20013cb 100644 --- a/src/cql.y +++ b/src/cql.y @@ -1,4 +1,4 @@ -/* $Id: cql.y,v 1.14 2007-06-28 07:58:07 adam Exp $ +/* $Id: cql.y,v 1.15 2007-10-31 21:58:07 adam Exp $ Copyright (C) 2002-2006 Index Data ApS @@ -278,8 +278,13 @@ int yylex(YYSTYPE *lval, void *vp) while ((c = cp->getbyte(cp->client_data)) != 0 && c != '"') { if (c == '\\') + { + putb(lval, cp, c); c = cp->getbyte(cp->client_data); - putb(lval, cp, c); + if (!c) + break; + } + putb(lval, cp, c); } putb(lval, cp, 0); } @@ -288,10 +293,16 @@ int yylex(YYSTYPE *lval, void *vp) while (c != 0 && !strchr(" \n()=<>/", c)) { if (c == '\\') + { + putb(lval, cp, c); c = cp->getbyte(cp->client_data); + if (!c) + break; + } putb(lval, cp, c); c = cp->getbyte(cp->client_data); } + putb(lval, cp, 0); #if YYDEBUG printf ("got %s\n", lval->buf); #endif