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>
|
2005-11-18 Laurent GUERBY <laurent@guerby.net>
|
||||||
|
|
||||||
PR ada/24857
|
PR ada/24857
|
||||||
|
|
|
@ -364,12 +364,23 @@ gnat_post_options (const char **pfilename ATTRIBUTE_UNUSED)
|
||||||
static void
|
static void
|
||||||
internal_error_function (const char *msgid, va_list *ap)
|
internal_error_function (const char *msgid, va_list *ap)
|
||||||
{
|
{
|
||||||
char buffer[1000]; /* Assume this is big enough. */
|
text_info tinfo;
|
||||||
|
char *buffer;
|
||||||
char *p;
|
char *p;
|
||||||
String_Template temp;
|
String_Template temp;
|
||||||
Fat_Pointer fp;
|
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. */
|
/* Go up to the first newline. */
|
||||||
for (p = buffer; *p; p++)
|
for (p = buffer; *p; p++)
|
||||||
|
@ -379,8 +390,10 @@ internal_error_function (const char *msgid, va_list *ap)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
temp.Low_Bound = 1, temp.High_Bound = strlen (buffer);
|
temp.Low_Bound = 1;
|
||||||
fp.Array = buffer, fp.Bounds = &temp;
|
temp.High_Bound = p - buffer;
|
||||||
|
fp.Bounds = &temp;
|
||||||
|
fp.Array = buffer;
|
||||||
|
|
||||||
Current_Error_Node = error_gnat_node;
|
Current_Error_Node = error_gnat_node;
|
||||||
Compiler_Abort (fp, -1);
|
Compiler_Abort (fp, -1);
|
||||||
|
|
Loading…
Reference in New Issue