From d08ff2b6df94d1042920244ad2d196607536972f Mon Sep 17 00:00:00 2001 From: uz Date: Sat, 2 Oct 2010 19:43:18 +0000 Subject: [PATCH] Fix parsing of push/pop so that #pragma warn works without. git-svn-id: svn://svn.cc65.org/cc65/trunk@4824 b7a2c559-68d2-44c3-8de9-860c34a00d81 --- src/cc65/pragma.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/cc65/pragma.c b/src/cc65/pragma.c index 2a4e1085a..4b690d7a9 100644 --- a/src/cc65/pragma.c +++ b/src/cc65/pragma.c @@ -6,7 +6,7 @@ /* */ /* */ /* */ -/* (C) 1998-2009, Ullrich von Bassewitz */ +/* (C) 1998-2010, Ullrich von Bassewitz */ /* Roemerstrasse 52 */ /* D-70794 Filderstadt */ /* EMail: uz@cc65.org */ @@ -238,7 +238,7 @@ static IntStack* GetWarning (StrBuf* B) /* Done */ return S; -} +} @@ -266,6 +266,8 @@ static PushPopResult ParsePushPop (StrBuf* B) StrBuf Ident = AUTO_STRBUF_INITIALIZER; PushPopResult Res = PP_NONE; + /* Remember the current string index, so we can go back in case of errors */ + unsigned Index = SB_GetIndex (B); /* Try to read an identifier */ if (SB_GetSym (B, &Ident, 0)) { @@ -282,14 +284,14 @@ static PushPopResult ParsePushPop (StrBuf* B) /* Skip the following comma */ if (!GetComma (B)) { + /* Error already flagged by GetComma */ Res = PP_ERROR; } } else { - /* Unknown keyword */ - Error ("Invalid pragma arguments"); - Res = PP_ERROR; + /* Unknown keyword, roll back */ + SB_SetIndex (B, Index); } }