diff options
author | Eric Botcazou <ebotcazou@adacore.com> | 2023-01-27 00:05:37 +0100 |
---|---|---|
committer | Marc Poulhiès <poulhies@adacore.com> | 2023-05-30 09:12:17 +0200 |
commit | f60d3abea1106dca6565bb390eabfe19c84e2f40 (patch) | |
tree | a9c29a631058efa00a43d3eddf7075923de68f36 /gcc | |
parent | d5518dabfa4ea310ee237dd4944970c387f27b3f (diff) | |
download | gcc-f60d3abea1106dca6565bb390eabfe19c84e2f40.zip gcc-f60d3abea1106dca6565bb390eabfe19c84e2f40.tar.gz gcc-f60d3abea1106dca6565bb390eabfe19c84e2f40.tar.bz2 |
ada: Make internal_error_function more robust
gcc/ada/
* gcc-interface/misc.cc (internal_error_function): Be prepared for
an input_location set to UNKNOWN_LOCATION.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ada/gcc-interface/misc.cc | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/gcc/ada/gcc-interface/misc.cc b/gcc/ada/gcc-interface/misc.cc index 56c7bb9..30319ae 100644 --- a/gcc/ada/gcc-interface/misc.cc +++ b/gcc/ada/gcc-interface/misc.cc @@ -330,13 +330,23 @@ internal_error_function (diagnostic_context *context, const char *msgid, sp.Bounds = &temp; sp.Array = buffer; - xloc = expand_location (input_location); - if (context->show_column && xloc.column != 0) - loc = xasprintf ("%s:%d:%d", xloc.file, xloc.line, xloc.column); + if (input_location == UNKNOWN_LOCATION) + { + loc = NULL; + temp_loc.Low_Bound = 1; + temp_loc.High_Bound = 0; + } else - loc = xasprintf ("%s:%d", xloc.file, xloc.line); - temp_loc.Low_Bound = 1; - temp_loc.High_Bound = strlen (loc); + { + xloc = expand_location (input_location); + if (context->show_column && xloc.column != 0) + loc = xasprintf ("%s:%d:%d", xloc.file, xloc.line, xloc.column); + else + loc = xasprintf ("%s:%d", xloc.file, xloc.line); + temp_loc.Low_Bound = 1; + temp_loc.High_Bound = strlen (loc); + } + sp_loc.Bounds = &temp_loc; sp_loc.Array = loc; |