[PATCH 20/33] Don't report OOM error on xmlCopyNode failure

Laine Stump laine at redhat.com
Thu Feb 25 03:25:56 UTC 2021


On 2/24/21 11:16 AM, Peter Krempa wrote:
> Out of memory isn't the only reason the function can fail. Add a message
> stating that copying of a XML node failed.

Could it still fail due to OOM as well, though? And if so, is there any 
way of differentiating? (I previously looked into this for some other 
libxml2 function, ended up asking DV, and I believe I was told that 
there isn't any way to tell the difference, but as usual IMBES (I May Be 
Experiencing Senility).

At any rate, your changed message is more correct, since it's not making 
any unsubstantiated assumption about the cause of the error, while 
virRemoveOOMError() was).


> 
> Signed-off-by: Peter Krempa <pkrempa at redhat.com>
> ---
>   src/conf/domain_conf.c | 3 ++-
>   src/test/test_driver.c | 6 ++++--
>   2 files changed, 6 insertions(+), 3 deletions(-)
> 
> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> index c0881608af..f1fd5320a5 100644
> --- a/src/conf/domain_conf.c
> +++ b/src/conf/domain_conf.c
> @@ -30460,7 +30460,8 @@ virDomainDefSetMetadata(virDomainDefPtr def,
>                   def->metadata = virXMLNewNode(NULL, "metadata");
> 
>               if (!(new = xmlCopyNode(doc->children, 1))) {
> -                virReportOOMError();
> +                virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
> +                               _("Failed to copy XML node"));
>                   return -1;
>               }
>           }
> diff --git a/src/test/test_driver.c b/src/test/test_driver.c
> index bca1297d1d..71ab04aa1a 100644
> --- a/src/test/test_driver.c
> +++ b/src/test/test_driver.c
> @@ -224,7 +224,8 @@ testDomainDefNamespaceParse(xmlXPathContextPtr ctxt,
>       for (i = 0; i < n; i++) {
>           xmlNodePtr newnode = xmlCopyNode(nodes[i], 1);
>           if (!newnode) {
> -            virReportOOMError();
> +            virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
> +                           _("Failed to copy XML node"));
>               goto error;
>           }
> 
> @@ -787,7 +788,8 @@ testParseXMLDocFromFile(xmlNodePtr node, const char *file, const char *type)
> 
>           ret = xmlCopyNode(xmlDocGetRootElement(doc), 1);
>           if (!ret) {
> -            virReportOOMError();
> +            virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
> +                           _("Failed to copy XML node"));
>               goto error;
>           }
>           xmlReplaceNode(node, ret);
> 




More information about the libvir-list mailing list