Dan Smith wrote:
JG> +char *classname_from_inst(const CMPIBroker *broker,
JG> + CMPIInstance *inst,
JG> + CMPIStatus *s)
JG> +{
JG> + char *ret = NULL;
JG> +
JG> + CMPIObjectPath *ref;
JG> + ref = CMGetObjectPath(inst, s);
JG> + if ((s->rc != CMPI_RC_OK) || CMIsNullObject(ref)) {
JG> + cu_statusf(broker, s,
JG> + CMPI_RC_ERR_FAILED,
JG> + "Could not get objectpath from instance");
JG> + goto out;
JG> + }
JG> +
JG> + ret = strdup(CLASSNAME(ref));
JG> +
JG> + out:
JG> + return ret;
JG> }
This could probably be a distinct patch as well.
Also, why strdup the result of CLASSNAME()? It's CIMOM-managed
memory, and most of the other libcu functions have been modified to
avoid dynamic memory where possible. The return value should be const
char * after this change.
As this illustrates, I'm never really sure whether or not strdup is the
right thing to do. It would appear that it's unnecessary here, so I'll
take it out.
Also, why not just signal your single error case by returning NULL?
That way you can avoid having to pass in the broker and the status
pointers and the function becomes a bit cleaner.
Probably just my natural tendency to over-complicate. I'll fix that as
well.
--
-Jay