diff options
Diffstat (limited to 'libcpp')
-rw-r--r-- | libcpp/internal.h | 1 | ||||
-rw-r--r-- | libcpp/lex.cc | 10 |
2 files changed, 9 insertions, 2 deletions
diff --git a/libcpp/internal.h b/libcpp/internal.h index ad4e590..5f4d9cb 100644 --- a/libcpp/internal.h +++ b/libcpp/internal.h @@ -85,6 +85,7 @@ struct dummy { double d; int *p; + location_t l; } u; }; diff --git a/libcpp/lex.cc b/libcpp/lex.cc index 849447e..858970b 100644 --- a/libcpp/lex.cc +++ b/libcpp/lex.cc @@ -4997,7 +4997,8 @@ _cpp_aligned_alloc (cpp_reader *pfile, size_t len) void * _cpp_commit_buff (cpp_reader *pfile, size_t size) { - void *ptr = BUFF_FRONT (pfile->a_buff); + const auto buff = pfile->a_buff; + void *ptr = BUFF_FRONT (buff); if (pfile->hash_table->alloc_subobject) { @@ -5006,7 +5007,12 @@ _cpp_commit_buff (cpp_reader *pfile, size_t size) ptr = copy; } else - BUFF_FRONT (pfile->a_buff) += size; + { + BUFF_FRONT (buff) += size; + /* Make sure the remaining space is maximally aligned for whatever this + buffer holds next. */ + BUFF_FRONT (buff) += BUFF_ROOM (buff) % DEFAULT_ALIGNMENT; + } return ptr; } |