From e880ac6059f4c9684ff8ffc4d3c122be6d4aafe7 Mon Sep 17 00:00:00 2001 From: cuz Date: Sun, 29 Sep 2002 21:13:09 +0000 Subject: [PATCH] Use the new StrBuf features git-svn-id: svn://svn.cc65.org/cc65/trunk@1414 b7a2c559-68d2-44c3-8de9-860c34a00d81 --- src/cc65/asmstmt.c | 42 +++++++++++++++--------------------------- 1 file changed, 15 insertions(+), 27 deletions(-) diff --git a/src/cc65/asmstmt.c b/src/cc65/asmstmt.c index f3bad1601..0644e8029 100644 --- a/src/cc65/asmstmt.c +++ b/src/cc65/asmstmt.c @@ -273,8 +273,8 @@ static void ParseLVarArg (StrBuf* T, unsigned Arg) static void ParseAsm (void) /* Parse the contents of the ASM statement */ { - unsigned I; unsigned Arg; + char C; /* Create a target string buffer */ StrBuf T = AUTO_STRBUF_INITIALIZER; @@ -302,12 +302,8 @@ static void ParseAsm (void) * %o - Stack offset of a (local) variable * %% - The % sign */ - I = 0; Arg = 0; - while (I < SB_GetLen (&S)) { - - /* Get the next character */ - char C = SB_AtUnchecked (&S, I++); + while ((C = SB_Get (&S)) != '\0') { /* If it is a newline, the current line is ready to go */ if (C == '\n') { @@ -320,27 +316,19 @@ static void ParseAsm (void) /* Format specifier */ ++Arg; - - /* Check if we have characters left */ - if (I >= SB_GetLen (&S)) { - Error ("Error in __asm__ format specifier %u", Arg); - AsmErrorSkip (); - goto Done; - } else { - C = SB_AtUnchecked (&S, I++); - switch (C) { - case 'b': ParseByteArg (&T, Arg); break; - case 'w': ParseWordArg (&T, Arg); break; - case 'l': ParseLongArg (&T, Arg); break; - case 'v': ParseGVarArg (&T, Arg); break; - case 'o': ParseLVarArg (&T, Arg); break; - case '%': SB_AppendChar (&T, '%'); break; - default: - Error ("Error in __asm__ format specifier %u", Arg); - AsmErrorSkip (); - goto Done; - } - } + C = SB_Get (&S); + switch (C) { + case 'b': ParseByteArg (&T, Arg); break; + case 'w': ParseWordArg (&T, Arg); break; + case 'l': ParseLongArg (&T, Arg); break; + case 'v': ParseGVarArg (&T, Arg); break; + case 'o': ParseLVarArg (&T, Arg); break; + case '%': SB_AppendChar (&T, '%'); break; + default: + Error ("Error in __asm__ format specifier %u", Arg); + AsmErrorSkip (); + goto Done; + } } else {