mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-14 21:52:18 -06:00
util/error: allow non-NUL-terminated err->src
Rust makes the current file available as a statically-allocated string, but without a NUL terminator. Allow this by storing an optional maximum length in the Error. Reviewed-by: Zhao Liu <zhao1.liu@intel.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
8714d366e7
commit
230a4894f4
2 changed files with 11 additions and 3 deletions
|
@ -18,7 +18,14 @@ struct Error
|
|||
{
|
||||
char *msg;
|
||||
ErrorClass err_class;
|
||||
const char *src, *func;
|
||||
const char *func;
|
||||
|
||||
/*
|
||||
* src might be NUL-terminated or not. If it is, src_len is negative.
|
||||
* If it is not, src_len is the length.
|
||||
*/
|
||||
const char *src;
|
||||
int src_len;
|
||||
int line;
|
||||
GString *hint;
|
||||
};
|
||||
|
|
|
@ -24,8 +24,8 @@ Error *error_warn;
|
|||
static void error_handle(Error **errp, Error *err)
|
||||
{
|
||||
if (errp == &error_abort) {
|
||||
fprintf(stderr, "Unexpected error in %s() at %s:%d:\n",
|
||||
err->func, err->src, err->line);
|
||||
fprintf(stderr, "Unexpected error in %s() at %.*s:%d:\n",
|
||||
err->func, err->src_len, err->src, err->line);
|
||||
error_report("%s", error_get_pretty(err));
|
||||
if (err->hint) {
|
||||
error_printf("%s", err->hint->str);
|
||||
|
@ -67,6 +67,7 @@ static void error_setv(Error **errp,
|
|||
g_free(msg);
|
||||
}
|
||||
err->err_class = err_class;
|
||||
err->src_len = -1;
|
||||
err->src = src;
|
||||
err->line = line;
|
||||
err->func = func;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue