mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-11 03:24:58 -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;
|
char *msg;
|
||||||
ErrorClass err_class;
|
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;
|
int line;
|
||||||
GString *hint;
|
GString *hint;
|
||||||
};
|
};
|
||||||
|
|
|
@ -24,8 +24,8 @@ Error *error_warn;
|
||||||
static void error_handle(Error **errp, Error *err)
|
static void error_handle(Error **errp, Error *err)
|
||||||
{
|
{
|
||||||
if (errp == &error_abort) {
|
if (errp == &error_abort) {
|
||||||
fprintf(stderr, "Unexpected error in %s() at %s:%d:\n",
|
fprintf(stderr, "Unexpected error in %s() at %.*s:%d:\n",
|
||||||
err->func, err->src, err->line);
|
err->func, err->src_len, err->src, err->line);
|
||||||
error_report("%s", error_get_pretty(err));
|
error_report("%s", error_get_pretty(err));
|
||||||
if (err->hint) {
|
if (err->hint) {
|
||||||
error_printf("%s", err->hint->str);
|
error_printf("%s", err->hint->str);
|
||||||
|
@ -67,6 +67,7 @@ static void error_setv(Error **errp,
|
||||||
g_free(msg);
|
g_free(msg);
|
||||||
}
|
}
|
||||||
err->err_class = err_class;
|
err->err_class = err_class;
|
||||||
|
err->src_len = -1;
|
||||||
err->src = src;
|
err->src = src;
|
||||||
err->line = line;
|
err->line = line;
|
||||||
err->func = func;
|
err->func = func;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue