Fix buffer overrun processing macro definitions

Fix potential buffer overrun (__first iterator becomes > __last and
starts processing garbage) when parsing macro definitions that would
occur if a macro definition ends in a comment. This would cause the
macro definition to contain incorrect content or even outright garbage
(i.e. random memory) if the trailing comment is at the end of the file,
as in boost/type_traits/detail/type_trait_def.hpp. In this worst case,
the macro expansion could contain a NUL byte which would cause parsing
to prematurely halt at the point of expansion.

Change-Id: I94ded39d9a20dc9510d827bc18adb2dc1bad17f0
Reviewed-by: John Cummings <jcummings2@users.sf.net>