Blame SOURCES/0001-Fix-error-handling-for-virNodeDeviceGetParent.patch

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