summaryrefslogtreecommitdiffstats
path: root/contrib/gcclibs/libcpp
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/gcclibs/libcpp')
-rw-r--r--contrib/gcclibs/libcpp/errors.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/contrib/gcclibs/libcpp/errors.c b/contrib/gcclibs/libcpp/errors.c
index 97de490..c8efd53 100644
--- a/contrib/gcclibs/libcpp/errors.c
+++ b/contrib/gcclibs/libcpp/errors.c
@@ -153,7 +153,20 @@ cpp_error (cpp_reader * pfile, int level, const char *msgid, ...)
}
else
{
- src_loc = pfile->cur_token[-1].src_loc;
+ /* Find actual previous token. */
+ cpp_token *t;
+
+ if (pfile->cur_token != pfile->cur_run->base)
+ t = pfile->cur_token - 1;
+ else
+ {
+ if (pfile->cur_run->prev != NULL)
+ t = pfile->cur_run->prev->limit;
+ else
+ t = NULL;
+ }
+ /* Retrieve corresponding source location, unless we failed. */
+ src_loc = t ? t->src_loc : 0;
}
if (_cpp_begin_message (pfile, level, src_loc, 0))
OpenPOWER on IntegriCloud