Skip to content
  • Markus Armbruster's avatar
    error: Fix use of error_prepend() with &error_fatal, &error_abort · 4b576648
    Markus Armbruster authored
    
    
    From include/qapi/error.h:
    
      * Pass an existing error to the caller with the message modified:
      *     error_propagate(errp, err);
      *     error_prepend(errp, "Could not frobnicate '%s': ", name);
    
    Fei Li pointed out that doing error_propagate() first doesn't work
    well when @errp is &error_fatal or &error_abort: the error_prepend()
    is never reached.
    
    Since I doubt fixing the documentation will stop people from getting
    it wrong, introduce error_propagate_prepend(), in the hope that it
    lures people away from using its constituents in the wrong order.
    Update the instructions in error.h accordingly.
    
    Convert existing error_prepend() next to error_propagate to
    error_propagate_prepend().  If any of these get reached with
    &error_fatal or &error_abort, the error messages improve.  I didn't
    check whether that's the case anywhere.
    
    Cc: Fei Li <fli@suse.com>
    Signed-off-by: default avatarMarkus Armbruster <armbru@redhat.com>
    Reviewed-by: default avatarPhilippe Mathieu-Daudé <philmd@redhat.com>
    Reviewed-by: default avatarEric Blake <eblake@redhat.com>
    Message-Id: <20181017082702.5581-2-armbru@redhat.com>
    4b576648