mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-02 23:33:54 -06:00
error: Infrastructure to track locations for error reporting
New struct Location holds a location. So far, the only location is LOC_NONE, so this doesn't do anything useful yet. Passing the current location all over the place would be too cumbersome. Hide it away in static cur_loc instead, and provide accessors. Print it in error_report(). Store it in QError, and print it in qerror_print(). Store it in QemuOpt, for use by qemu_opts_foreach(). This makes error_report() do the right thing when it runs within qemu_opts_foreach(). We may still have to store it in other data structures holding user input for better error messages. Left for another day.
This commit is contained in:
parent
ab5b027ee6
commit
827b08139c
6 changed files with 138 additions and 3 deletions
5
qerror.c
5
qerror.c
|
@ -224,6 +224,7 @@ QError *qerror_from_info(const char *file, int linenr, const char *func,
|
|||
QError *qerr;
|
||||
|
||||
qerr = qerror_new();
|
||||
loc_save(&qerr->loc);
|
||||
qerr->linenr = linenr;
|
||||
qerr->file = file;
|
||||
qerr->func = func;
|
||||
|
@ -321,10 +322,12 @@ QString *qerror_human(const QError *qerror)
|
|||
* it uses error_report() for this, so that the output is routed to the right
|
||||
* place (ie. stderr or Monitor's device).
|
||||
*/
|
||||
void qerror_print(const QError *qerror)
|
||||
void qerror_print(QError *qerror)
|
||||
{
|
||||
QString *qstring = qerror_human(qerror);
|
||||
loc_push_restore(&qerror->loc);
|
||||
error_report("%s", qstring_get_str(qstring));
|
||||
loc_pop(&qerror->loc);
|
||||
QDECREF(qstring);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue