If error is NULL this does nothing.
Otherwise it creates a new Error and stores it in error; unlike
gvir_set_error, message is not a printf
-style format string. Use this function if message contains text you don't have control over, that could include
printf escape sequences.
| error |
pointer to error location |
| domain |
error domain |
| code |
error code |
| message |
error message |