Dan Smith wrote:
- Set the namespace on the instance of the RASD we got from the
parser,
so that it's a usable reference for namespace, etc.
...
static const char *classify_resources(CMPIArray *resources,
+ const char *ns,
struct domain *domain)
{
int i;
@@ -308,31 +394,37 @@ static const char *classify_resources(CM
for (i = 0; i < count; i++) {
CMPIObjectPath *op;
CMPIData item;
+ CMPIInstance *inst;
const char *msg = NULL;
item = CMGetArrayElementAt(resources, i, NULL);
if (CMIsNullObject(item.value.inst))
return "Internal array error";
- op = CMGetObjectPath(item.value.inst, NULL);
+ inst = item.value.inst;
+
+ op = CMGetObjectPath(inst, NULL);
if (op == NULL)
return "Unknown resource instance type";
+
+ CMSetNameSpace(op, ns);
+ CMSetObjectPath(inst, op);
This line gave me a segfault. I'm
on sfcb in opensuse 10.3.
Deepti also saw a segfault. But I am not sure this is the same as hers.
She is using pegasus.
if (res_type_from_rasd_classname(CLASSNAME(op), &type) !=
CMPI_RC_OK)
return "Unable to determine resource type";
if (type == CIM_RES_TYPE_PROC)
- msg = rasd_to_vdev(item.value.inst,
+ msg = rasd_to_vdev(inst,
&domain->dev_vcpu[domain->dev_vcpu_ct++]);
else if (type == CIM_RES_TYPE_MEM)
- msg = rasd_to_vdev(item.value.inst,
+ msg = rasd_to_vdev(inst,
&domain->dev_mem[domain->dev_mem_ct++]);
else if (type == CIM_RES_TYPE_DISK)
- msg = rasd_to_vdev(item.value.inst,
+ msg = rasd_to_vdev(inst,
&domain->dev_disk[domain->dev_disk_ct++]);
else if (type == CIM_RES_TYPE_NET)
- msg = rasd_to_vdev(item.value.inst,
+ msg = rasd_to_vdev(inst,
&domain->dev_net[domain->dev_net_ct++]);
if (msg != NULL)
--
- Zhengang