diff options
author | midipix <writeonce@midipix.org> | 2016-01-09 16:34:39 -0500 |
---|---|---|
committer | midipix <writeonce@midipix.org> | 2016-01-09 16:34:39 -0500 |
commit | 5a349e333087d9901d1a046139ec942c36afcb93 (patch) | |
tree | 157e42de84baf8348c6f9bd04968013628efdf0e /src | |
parent | 58e7b9bc575a315f8bfcc70c1e7b6f6730b0f536 (diff) | |
download | apimagic-5a349e333087d9901d1a046139ec942c36afcb93.tar.bz2 apimagic-5a349e333087d9901d1a046139ec942c36afcb93.tar.xz |
amgc_output_pad_symbol(): use symwidth, fix unspecified tab-width code path.
of the three compilers in use (gcc 5.3.0, clang 3.6.2, cparser 1.22.1),
flaws in the previous version of this function were only spotted by cparser.
Diffstat (limited to 'src')
-rw-r--r-- | src/output/amgc_output_pad_symbol.c | 13 |
1 files changed, 4 insertions, 9 deletions
diff --git a/src/output/amgc_output_pad_symbol.c b/src/output/amgc_output_pad_symbol.c index 6a475ee..6c1d34a 100644 --- a/src/output/amgc_output_pad_symbol.c +++ b/src/output/amgc_output_pad_symbol.c @@ -21,20 +21,15 @@ int amgc_output_pad_symbol( if (layout->symwidth < 1) return -1; - if (layout->tabwidth) { - symwidth += layout->tabwidth; - symwidth &= (~(layout->tabwidth-1)); - } else { - symwidth += AMGC_TAB_WIDTH; - symwidth &= (~(AMGC_TAB_WIDTH-1)); - } - if (layout->tabwidth == 0) return fprintf(fout,"%*c",layout->symwidth-len,' '); + symwidth += layout->tabwidth; + symwidth &= (~(layout->tabwidth-1)); + len &= (~(layout->tabwidth-1)); - while (len < layout->symwidth) { + while (len < symwidth) { if (fputc('\t',fout) < 0) return -1; else |