Quick Search:

Mode

Context

Displaying 3 lines of context. None | Less | More | Full

Other Diffs

Ignore

Blank Lines Whitespace: Expand:

Diff

1.148
 
1.149
 
MAIN:ragge:20120729095905
 
cpp.c
_>16561656 exparg(int lvl)
 16571657 {
 16581658         struct symtab *nl;
<>1659 -        int c, i;
  1659+        int c, i, gmult;
16601660         usch *och;
 16611661         usch *osb = stringbuf;
 16621662         int anychange;
     
 !
16701670         while ((c = sloscan()) != WARN) {
 16711671                 DDPRINT(("%d:exparg swdata %d\n", lvl, c));
 16721672                 IMP("EA0");
<> 1673+                bidx = 0;
16731674                 switch (c) {
 16741675 
 16751676                 case EBLOCK:
     
 !
16781679                 case IDENT:
 16791680                         /*
 16801681                          * Handle argument concatenation here.
<>1681 -                         * In case of concatenation, scratch all blockings.
  1682+                         * In case of concatenation, add all blockings.
16821683                          */
 16831684                         DDPRINT(("%d:exparg ident %d\n", lvl, c));
 16841685                         och = stringbuf;
<> 1686+                        gmult = 0;
16851687 
 16861688 sav:                    savstr(yytext);
 16871689 
 16881690                         if ((c = cinput()) == EBLOCK) {
<>1689 -                                /* yep, are concatenating; forget blocks */
  1691+                                /* yep, are concatenating; add blocks */
  1692+                                gmult = 1;
16901693                                 do {
<>1691 -                                        (void)cinput();
 1692 -                                        (void)cinput();
  1694+                                        donex();
16931695                                 } while ((c = sloscan()) == EBLOCK);
<>1694 -                                bidx = 0;
16951696                                 goto sav;
 16961697                         }
 16971698                         cunput(c);
     
 !
17071708                                 }
 17081709                         } else if (bidx) {
 17091710                                 /* must restore blocks */
<> 1711+                                if (gmult) {
  1712+                                        unpstr(och);
  1713+                                        if (sloscan() != IDENT)
  1714+                                                error("exparg sync error");
  1715+                                }
<_17101716                                 stringbuf = och;
 17111717                                 for (i = 0; i < bidx; i++)
 17121718                                         savch(EBLOCK), savch(bptr[i] & 255),
FishEye: Open Source License registered to PCC.
Your maintenance has expired. You can renew your license at http://www.atlassian.com/fisheye/renew
Atlassian FishEye, CVS analysis. (Version:1.6.3 Build:build-336 2008-11-04) - Administration - Page generated 2014-10-31 08:45 +0100