Skip to content
  • Paolo Bonzini's avatar
    qapi: fix error propagation · d195325b
    Paolo Bonzini authored
    
    
    Don't overwrite / leak previously set errors.
    Make traversal cope with missing mandatory sub-structs.
    Don't try to end a container that could not be started.
    
    v1->v2:
    - unchanged
    
    v2->v3:
    - instead of examining, assert that we never overwrite errors with
      error_set()
    - allow visitors to set a NULL struct pointer successfully, so traversal
      of incomplete objects can continue
    - check for a NULL "obj" before accessing "(*obj)->has_XXX" (this is not a
      typo, "obj != NULL" implies "*obj != NULL" here)
    - fix start_struct / end_struct balance for unions as well
    
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: default avatarLaszlo Ersek <lersek@redhat.com>
    Signed-off-by: default avatarStefan Hajnoczi <stefanha@linux.vnet.ibm.com>
    d195325b