From: Konrad R. <kon...@us...> - 2005-03-22 22:03:24
|
Update of /cvsroot/sblim/indication_helper In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10071 Modified Files: ind_helper.c Log Message: Fixing problems associated with one of the test-cases failing. Index: ind_helper.c =================================================================== RCS file: /cvsroot/sblim/indication_helper/ind_helper.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- ind_helper.c 17 Mar 2005 08:52:03 -0000 1.4 +++ ind_helper.c 22 Mar 2005 22:02:55 -0000 1.5 @@ -749,6 +749,9 @@ CMPIStatus status; CMPIBoolean b; IndErrorT rc = IND_OK; +#if defined(DEBUG) + CMPIString *temp = NULL; +#endif /* Send an indication */ IND_HLP_DEBUG("_generateIndication called."); @@ -899,8 +902,13 @@ the filter on it */ #ifdef DEBUG + temp = CDToString(broker,instance,&status); fprintf(stderr,"Trying filter: %p from %s:%s on instance %s\n", - p->filter, p->namespace, p->cn, CMGetCharPtr(CDToString(broker,instance,&status)) ); + p->filter, p->namespace, p->cn, (temp->hdl != NULL) ? CMGetCharPtr(temp) : "unknown."); + if (temp) { + CMRelease(temp); + temp = NULL; + } #endif if (p->filter != NULL) { @@ -1145,7 +1153,7 @@ /* Call the routine */ data.type = CMPI_null; data.state = CMPI_nullValue; - _releaseDataValue(&p->data); + _releaseDataValue(&data); IND_HLP_DEBUG("Calling the monitor function"); if (p->check(&data) != IND_OK) { @@ -1161,7 +1169,7 @@ if (_compareCIMValue(data,p->data) != 0) { /* Yeey, data changed! */ /* Copy the data */ - + IND_HLP_DEBUG("Yeey, data changed! Generate indication.\n"); _releaseData(&p->data); _cloneData(&p->data, &data); @@ -1738,11 +1746,12 @@ CMPIString *v1_str, *v2_str; int v1_cnt, v2_cnt,i, rc; CMPIData v1_data, v2_data; - /* +#if defined(DEBUG) fprintf(stderr,"type:%d == %d, state: %d %d\n", value1.type, value2.type, value1.state, value2.state); - */ +#endif + /* Check that the type of the two CIM values is the same */ if (value1.type != value2.type) return 0; @@ -1750,8 +1759,12 @@ switch (value1.type) { case CMPI_null: return 0; - case CMPI_string: + case CMPI_string: + if ((v1.string ) || (v2.string)) { + if ((v1.string->hdl) && (v2.string->hdl)) return strcmp(CMGetCharPtr(v1.string), CMGetCharPtr(v2.string)); + } + return 0; case CMPI_dateTime: return CMGetBinaryFormat(v1.dateTime, NULL) != CMGetBinaryFormat(v2.dateTime, NULL); @@ -2008,81 +2021,12 @@ static IndErrorT _releaseData(CMPIData *data) { - /* - CMPICount count = 0, i; - CMPIStatus status; - CMPIData temp; - */ IND_HLP_DEBUG("_releaseData called."); + if (data == NULL) return IND_INVALID_ARGS; - switch (data->type) - { - case CMPI_instance: - CMRelease(data->value.inst); - break; - - case CMPI_ref: - CMRelease(data->value.ref); - break; - - case CMPI_args: - CMRelease(data->value.args); - break; - - case CMPI_filter: - CMRelease(data->value.filter); - break; - - case CMPI_enumeration: - CMRelease(data->value.Enum); - break; - - case CMPI_chars: - free(data->value.chars); - break; - - case CMPI_dateTime: - CMRelease(data->value.dateTime); - break; - - case CMPI_ptr: - - data->value.dataPtr.length = 0; - free(data->value.dataPtr.ptr); - break; - - } - - if ((data->type & CMPI_ARRAY) == CMPI_ARRAY) - { - IND_HLP_DEBUG("Array released."); - /* Should we go through each element on the list? */ - /* - count = CMGetArrayCount(data->value.array, &status); - for (i = 0; i < count; i++) - { - temp=CMGetArrayElementAt(data->value.array, - i, &status); - _releaseData(&temp); - } - */ - if (data->value.array) - CMRelease(data->value.array); - - } - - if (((data->type & CMPI_string) == CMPI_string) && - (data->type != CMPI_chars) && - ((data->type & CMPI_ARRAY) != CMPI_ARRAY)) - - { - IND_HLP_DEBUG("String released."); - if (data->value.string) - CMRelease(data->value.string); - } - + _releaseDataValue(data); /* Set the values to null values */ data->type = CMPI_null; @@ -2106,37 +2050,61 @@ break; case CMPI_instance: - CMRelease(data->value.inst); + if (data->value.inst) { + CMRelease(data->value.inst); + data->value.inst = NULL; + } break; case CMPI_ref: - CMRelease(data->value.ref); + if (data->value.ref) { + CMRelease(data->value.ref); + data->value.ref = NULL; + } break; case CMPI_args: - CMRelease(data->value.args); + if (data->value.args) { + CMRelease(data->value.args); + data->value.args = NULL; + } break; case CMPI_filter: - CMRelease(data->value.filter); + if (data->value.filter) { + CMRelease(data->value.filter); + data->value.filter = NULL; + } break; case CMPI_enumeration: - CMRelease(data->value.Enum); + if (data->value.Enum) { + CMRelease(data->value.Enum); + data->value.Enum = NULL; + } break; case CMPI_chars: - free(data->value.chars); + if (data->value.chars) { + free(data->value.chars); + data->value.chars = NULL; + } break; case CMPI_dateTime: + if (data->value.dateTime) { CMRelease(data->value.dateTime); + data->value.dateTime= NULL; + } break; case CMPI_ptr: data->value.dataPtr.length = 0; + if (data->value.dataPtr.ptr) { free(data->value.dataPtr.ptr); + data->value.dataPtr.ptr = NULL; + } break; } @@ -2165,8 +2133,10 @@ { IND_HLP_DEBUG("String released."); - if (data->value.string) - CMRelease(data->value.string); + if (data->value.string) { + CMRelease(data->value.string); + data->value.string = NULL; + } } IND_HLP_DEBUG("_releaseDataValue exited."); |