preproc: Refactor smacro paramters expansion
authorCyrill Gorcunov <gorcunov@gmail.com>
Wed, 29 Jun 2011 21:36:45 +0000 (01:36 +0400)
committerCyrill Gorcunov <gorcunov@gmail.com>
Wed, 29 Jun 2011 21:36:45 +0000 (01:36 +0400)
Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
preproc.c

index 8f3e3cb..07568da 100644 (file)
--- a/preproc.c
+++ b/preproc.c
@@ -4632,18 +4632,21 @@ again:
                     list_for_each(t, m->expansion) {
                         if (is_smacro_param(t)) {
                             Token *pcopy = tline, **ptail = &pcopy;
-                            Token *ttt, *pt;
+                            Token *ttt;
                             int i, idx;
 
                             idx = smacro_get_param_idx(t);
                             ttt = params[idx];
-                            i   = paramsize[idx];
-                            while (--i >= 0) {
-                                pt = *ptail = new_Token(tline, ttt->type,
-                                                        ttt->text, 0);
-                                ptail = &pt->next;
+
+                            /*
+                             * We need smacro paramters appended.
+                             */
+                            for (i = paramsize[idx]; i > 0; i--) {
+                                *ptail = new_Token(tline, ttt->type, ttt->text, 0);
+                                ptail = &(*ptail)->next;
                                 ttt = ttt->next;
                             }
+
                             tline = pcopy;
                         } else if (t->type == TOK_PREPROC_Q) {
                             tt = new_Token(tline, TOK_ID, mname, 0);