From 4eaf7009f1346e11a7d8903025d07ecee84ccf36 Mon Sep 17 00:00:00 2001 From: "Daniel P. Berrange" Date: Tue, 6 Aug 2013 14:23:55 +0100 Subject: [PATCH] Fix error handling for virNodeDeviceGetParent() https://bugzilla.redhat.com/show_bug.cgi?id=994141 It is valid for virNodeDeviceGetParent() to return NULL in the case where there is no parent device present. Signed-off-by: Daniel P. Berrange (cherry picked from commit 43666d996feed10d72a1eb03415901d7b3d5332a) --- Virt.xs | 6 ++++-- examples/node-devlist.pl | 11 +++++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) create mode 100644 examples/node-devlist.pl diff --git a/Virt.xs b/Virt.xs index aa4a795..f8ebce7 100644 --- a/Virt.xs +++ b/Virt.xs @@ -5390,8 +5390,10 @@ const char * get_parent(dev) virNodeDevicePtr dev; CODE: - if (!(RETVAL = virNodeDeviceGetParent(dev))) - _croak_error(); + if (!(RETVAL = virNodeDeviceGetParent(dev))) { + if (virGetLastError() != NULL) + _croak_error(); + } OUTPUT: RETVAL diff --git a/examples/node-devlist.pl b/examples/node-devlist.pl new file mode 100644 index 0000000..59f6a82 --- /dev/null +++ b/examples/node-devlist.pl @@ -0,0 +1,11 @@ +#!/usr/bin/perl + +use Sys::Virt; + +my $conn = Sys::Virt->new(); + +my @nodelist = $conn->list_all_node_devices(); +foreach my $dev (@nodelist){ + my $parent = $dev->get_parent(); + printf "%s: < %s\n", $dev->get_name(), $parent; +}