re PR ada/23717 ([Ada] Wrong ICE diagnostic formatting)
2005-11-19 Richard Guenther <rguenther@suse.de> Roger Sayle <roger@eyesopen.com> PR ada/23717 * misc.c (internal_error_function): Don't use vsprintf to format the error message text, instead use pp_format_text and the new pretty printer APIs. This allows handling of %qs, %w, etc. Co-Authored-By: Roger Sayle <roger@eyesopen.com> From-SVN: r107223
This commit is contained in:
parent
756191b7c5
commit
452b5b1e53
|
@ -1,3 +1,11 @@
|
|||
2005-11-19 Richard Guenther <rguenther@suse.de>
|
||||
Roger Sayle <roger@eyesopen.com>
|
||||
|
||||
PR ada/23717
|
||||
* misc.c (internal_error_function): Don't use vsprintf to format
|
||||
the error message text, instead use pp_format_text and the new
|
||||
pretty printer APIs. This allows handling of %qs, %w, etc.
|
||||
|
||||
2005-11-18 Laurent GUERBY <laurent@guerby.net>
|
||||
|
||||
PR ada/24857
|
||||
|
|
|
@ -364,12 +364,23 @@ gnat_post_options (const char **pfilename ATTRIBUTE_UNUSED)
|
|||
static void
|
||||
internal_error_function (const char *msgid, va_list *ap)
|
||||
{
|
||||
char buffer[1000]; /* Assume this is big enough. */
|
||||
text_info tinfo;
|
||||
char *buffer;
|
||||
char *p;
|
||||
String_Template temp;
|
||||
Fat_Pointer fp;
|
||||
|
||||
vsprintf (buffer, msgid, *ap);
|
||||
/* Reset the pretty-printer. */
|
||||
pp_clear_output_area (global_dc->printer);
|
||||
|
||||
/* Format the message into the pretty-printer. */
|
||||
tinfo.format_spec = msgid;
|
||||
tinfo.args_ptr = ap;
|
||||
tinfo.err_no = errno;
|
||||
pp_format_verbatim (global_dc->printer, &tinfo);
|
||||
|
||||
/* Extract a (writable) pointer to the formatted text. */
|
||||
buffer = (char*) pp_formatted_text (global_dc->printer);
|
||||
|
||||
/* Go up to the first newline. */
|
||||
for (p = buffer; *p; p++)
|
||||
|
@ -379,8 +390,10 @@ internal_error_function (const char *msgid, va_list *ap)
|
|||
break;
|
||||
}
|
||||
|
||||
temp.Low_Bound = 1, temp.High_Bound = strlen (buffer);
|
||||
fp.Array = buffer, fp.Bounds = &temp;
|
||||
temp.Low_Bound = 1;
|
||||
temp.High_Bound = p - buffer;
|
||||
fp.Bounds = &temp;
|
||||
fp.Array = buffer;
|
||||
|
||||
Current_Error_Node = error_gnat_node;
|
||||
Compiler_Abort (fp, -1);
|
||||
|
|
Loading…
Reference in New Issue