Module Name: src Committed By: christos Date: Fri Apr 18 01:39:57 UTC 2014
Modified Files: src/usr.bin/xlint/lint1: scan.l Log Message: Never return the attribute keywords if we are not in attribute. To generate a diff of this commit: cvs rdiff -u -r1.55 -r1.56 src/usr.bin/xlint/lint1/scan.l Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/usr.bin/xlint/lint1/scan.l diff -u src/usr.bin/xlint/lint1/scan.l:1.55 src/usr.bin/xlint/lint1/scan.l:1.56 --- src/usr.bin/xlint/lint1/scan.l:1.55 Thu Apr 17 20:23:46 2014 +++ src/usr.bin/xlint/lint1/scan.l Thu Apr 17 21:39:57 2014 @@ -1,5 +1,5 @@ %{ -/* $NetBSD: scan.l,v 1.55 2014/04/18 00:23:46 christos Exp $ */ +/* $NetBSD: scan.l,v 1.56 2014/04/18 01:39:57 christos Exp $ */ /* * Copyright (c) 1996 Christopher G. Demetriou. All Rights Reserved. @@ -35,7 +35,7 @@ #include <sys/cdefs.h> #if defined(__RCSID) && !defined(lint) -__RCSID("$NetBSD: scan.l,v 1.55 2014/04/18 00:23:46 christos Exp $"); +__RCSID("$NetBSD: scan.l,v 1.56 2014/04/18 01:39:57 christos Exp $"); #endif #include <stdlib.h> @@ -444,11 +444,8 @@ name(void) sb->sb_len = yyleng; sb->sb_hash = hash(yytext); if ((sym = search(sb)) != NULL && sym->s_keyw) { - struct kwtab *kw = sym->s_keyw; - if (!kw->kw_attr || attron) { - freesb(sb); - return (keyw(sym)); - } + freesb(sb); + return (keyw(sym)); } sb->sb_sym = sym; @@ -478,8 +475,12 @@ search(sbuf_t *sb) for (sym = symtab[sb->sb_hash]; sym != NULL; sym = sym->s_link) { if (strcmp(sym->s_name, sb->sb_name) == 0) { - if (sym->s_keyw || sym->s_kind == symtyp) - return (sym); + if (sym->s_keyw) { + struct kwtab *kw = sym->s_keyw; + if (!kw->kw_attr || attron) + return (sym); + } else if (sym->s_kind == symtyp) + return sym; } } @@ -1387,7 +1388,7 @@ getsym(sbuf_t *sb) if (sym != NULL) { if (sym->s_kind != symtyp) - LERROR("storesym()"); + LERROR("storesym(%d, %d)", sym->s_kind, symtyp); symtyp = FVFT; freesb(sb); return (sym);