File pegasus-2.9.1-memleak.patch of Package tog-pegasus

diff -up pegasus/src/Pegasus/ProviderManager2/CMPI/CMPI_Array.cpp.orig pegasus/src/Pegasus/ProviderManager2/CMPI/CMPI_Array.cpp
--- pegasus/src/Pegasus/ProviderManager2/CMPI/CMPI_Array.cpp.orig	2008-12-02 10:01:49.000000000 +0100
+++ pegasus/src/Pegasus/ProviderManager2/CMPI/CMPI_Array.cpp	2010-03-04 12:39:48.004067946 +0100
@@ -33,6 +33,7 @@
 
 #include "CMPI_Object.h"
 #include "CMPI_Ftabs.h"
+#include "CMPI_Array.h"
 #include <Pegasus/Common/Tracer.h>
 #include <string.h>
 
@@ -48,16 +49,92 @@ extern "C"
             TRC_CMPIPROVIDERINTERFACE,
             "CMPI_Array:arrayRelease()");
 
-        CMPIData *dta = (CMPIData*)eArray->hdl;
-        if (dta)
+        CMPIStatus rrc = {CMPI_RC_OK,NULL};
+        CMPI_Array *arr = (CMPI_Array*)eArray->hdl;
+        if (!arr)
         {
-            delete[] dta;
-            reinterpret_cast<CMPI_Object*>(eArray)->unlinkAndDelete();
             PEG_METHOD_EXIT();
-            CMReturn(CMPI_RC_OK);
+            CMReturn(CMPI_RC_ERR_INVALID_HANDLE);
         }
+        CMPIData* dta=(CMPIData*)arr->hdl;
+        if (!dta)
+        {
+            PEG_METHOD_EXIT();
+            CMReturn(CMPI_RC_ERR_INVALID_HANDLE);
+        }
+
+        if (arr->isCloned == true)
+        {
+            for (unsigned int i=1; i<=dta->value.uint32; i++)
+            {
+                if (dta->type & CMPI_ENC && dta[i].state==CMPI_goodValue)
+                {
+                    switch (dta[i].type)
+                    {
+                        case CMPI_instance:
+                            if (dta[i].value.inst)
+                            {
+                                rrc = (dta[i].value.inst)->ft->release(
+                                    dta[i].value.inst);
+                            }
+                            break;
+                        case CMPI_ref:
+                            if (dta[i].value.ref)
+                            {
+                                rrc = (dta[i].value.ref)->ft->release(
+                                    dta[i].value.ref);
+                            }
+                            break;
+                        case CMPI_args:
+                            if (dta[i].value.args)
+                            {
+                                rrc = (dta[i].value.args)->ft->release(
+                                    dta[i].value.args);
+                            }
+                            break;
+                        case CMPI_dateTime:
+                            if (dta[i].value.dateTime)
+                            {
+                                rrc = (dta[i].value.dateTime)->ft->release(
+                                    dta[i].value.dateTime);
+                            }
+                            break;
+                        case CMPI_enumeration:
+                            if (dta[i].value.Enum)
+                            {
+                                rrc = (dta[i].value.Enum)->ft->release(
+                                    dta[i].value.Enum);
+                            }
+                            break;
+                        case CMPI_filter:
+                            if (dta[i].value.filter)
+                            {
+                                rrc = (dta[i].value.filter)->ft->release(
+                                    dta[i].value.filter);
+                            }
+                            break;
+                        case CMPI_charsptr:
+                            if (dta[i].value.dataPtr.ptr)
+                            {
+                                free(dta[i].value.dataPtr.ptr);
+                            }
+                            break;
+                        case CMPI_string:
+                            if (dta[i].value.string)
+                            {
+                                rrc = (dta[i].value.string)->ft->release(
+                                    dta[i].value.string);
+                            }
+                            break;
+                    }
+                }
+            }
+        }
+        delete[] dta;
+        delete arr;
+        reinterpret_cast<CMPI_Object*>(eArray)->unlinkAndDelete();
         PEG_METHOD_EXIT();
-        CMReturn(CMPI_RC_ERR_INVALID_HANDLE);
+        CMReturn(CMPI_RC_OK);
     }
 
     PEGASUS_STATIC CMPIArray* arrayClone(
@@ -67,8 +144,14 @@ extern "C"
         PEG_METHOD_ENTER(
             TRC_CMPIPROVIDERINTERFACE,
             "CMPI_Array:arrayClone()");
-        CMPIData* dta=(CMPIData*)eArray->hdl;
-
+        CMPI_Array *arr = (CMPI_Array*)eArray->hdl;
+        if (!arr)
+        {
+            CMSetStatus(rc, CMPI_RC_ERR_INVALID_HANDLE);
+            PEG_METHOD_EXIT();
+            return NULL;
+        }
+        CMPIData* dta=(CMPIData*)arr->hdl;
         if (!dta)
         {
             CMSetStatus(rc, CMPI_RC_ERR_INVALID_HANDLE);
@@ -76,7 +159,8 @@ extern "C"
             return NULL;
         }
         CMPIData* nDta = new CMPIData[dta->value.uint32+1];
-        CMPI_Object* obj = new CMPI_Object(nDta);
+        CMPI_Array* nArr = new CMPI_Array(nDta, true);
+        CMPI_Object* obj = new CMPI_Object(nArr);
         obj->unlink();
         CMPIArray* nArray = reinterpret_cast<CMPIArray*>(obj);
         CMPIStatus rrc = {CMPI_RC_OK,NULL};
@@ -98,67 +182,99 @@ extern "C"
             }
             if (dta->type & CMPI_ENC && dta[i].state==CMPI_goodValue)
             {
-                if ((dta[i].type == CMPI_instance) && (dta[i].value.inst))
-                {
-                    nDta[i].value.inst =
-                        (dta[i].value.inst)->ft->clone(dta[i].value.inst,&rrc);
-                }
-                if ((dta[i].type == CMPI_ref) && (dta[i].value.ref))
-                {
-                    nDta[i].value.ref =
-                        (dta[i].value.ref)->ft->clone(dta[i].value.ref,&rrc);
-                }
-                if ((dta[i].type == CMPI_args) && (dta[i].value.args))
-                {
-                    nDta[i].value.args =
-                        (dta[i].value.args)->ft->clone(dta[i].value.args,&rrc);
-                }
-                if ((dta[i].type == CMPI_dateTime) && (dta[i].value.dateTime))
-                {
-                    nDta[i].value.dateTime =
-                        (dta[i].value.dateTime)->ft->clone(
-                            dta[i].value.dateTime,
-                            &rrc);
-                }
-                if ((dta[i].type == CMPI_enumeration) && (dta[i].value.Enum))
-                {
-                    nDta[i].value.Enum =
-                        (dta[i].value.Enum)->ft->clone(dta[i].value.Enum,&rrc);
-                }
-                if ((dta[i].type == CMPI_filter) && (dta[i].value.filter))
-                {
-                    nDta[i].value.filter =
-                        (dta[i].value.filter)->ft->clone(
-                            dta[i].value.filter,
-                            &rrc);
-                }
-                if ((dta[i].type == CMPI_charsptr) &&
-                    (dta[i].value.dataPtr.length>0))
-                {
-                    nDta[i].value.dataPtr.length = dta[i].value.dataPtr.length;
-                    nDta[i].value.dataPtr.ptr =
-                        malloc(nDta[i].value.dataPtr.length);
-                    if (nDta[i].value.dataPtr.ptr == NULL)
-                    {
-                        arrayRelease(nArray);
-                        if (rc)
+                switch (dta[i].type)
+		{
+                    case CMPI_instance:
+                        if (dta[i].value.inst)
                         {
-                            *rc=rrc;
+                            nDta[i].value.inst =
+                                (dta[i].value.inst)->ft->clone(
+                                    dta[i].value.inst,
+                                    &rrc);
                         }
-                        return NULL;
-                    }
-                    memcpy(
-                        nDta[i].value.dataPtr.ptr,
-                        dta[i].value.dataPtr.ptr,
-                        dta[i].value.dataPtr.length);
-                }
+                        break;
+          
+                    case CMPI_ref:
+                        if (dta[i].value.ref)
+                        {
+                            nDta[i].value.ref = (dta[i].value.ref)->ft->clone(
+                                dta[i].value.ref,
+                                &rrc);
+                        }
+                        break;
 
-                if ((dta[i].type == CMPI_string) && (dta[i].value.string))
-                {
-                    nDta[i].value.string =
-                        (dta[i].value.string)->ft->clone(
-                            dta[i].value.string,
-                            &rrc);
+                    case CMPI_args:
+                        if (dta[i].value.args)
+                        {
+                            nDta[i].value.args =
+                                (dta[i].value.args)->ft->clone(
+                                    dta[i].value.args,
+                                    &rrc);
+                        }
+                        break;
+
+                    case CMPI_dateTime:
+                        if (dta[i].value.dateTime)
+                        {
+                            nDta[i].value.dateTime =
+                                (dta[i].value.dateTime)->ft->clone(
+                                    dta[i].value.dateTime,
+                                    &rrc);
+                        }
+                        break;
+
+                    case CMPI_enumeration:
+                        if (dta[i].value.Enum)
+                        {
+                            nDta[i].value.Enum =
+                                (dta[i].value.Enum)->ft->clone(
+                                    dta[i].value.Enum,
+                                    &rrc);
+                        }
+                        break;
+
+                    case CMPI_filter:
+                        if (dta[i].value.filter)
+                        {
+                            nDta[i].value.filter =
+                                (dta[i].value.filter)->ft->clone(
+                                    dta[i].value.filter,
+                                    &rrc);
+                        }
+                        break;
+
+                    case CMPI_charsptr:
+                        if (dta[i].value.dataPtr.length>0)
+                        {
+                            nDta[i].value.dataPtr.length = 
+                                dta[i].value.dataPtr.length;
+                            nDta[i].value.dataPtr.ptr =
+                                malloc(nDta[i].value.dataPtr.length);
+                            if (nDta[i].value.dataPtr.ptr == NULL)
+                            {
+                                arrayRelease(nArray);
+                                if (rc)
+                                {
+                                    *rc=rrc;
+                                }
+                                return NULL;
+                            }
+                            memcpy(
+                                nDta[i].value.dataPtr.ptr,
+                                dta[i].value.dataPtr.ptr,
+                                dta[i].value.dataPtr.length);
+                        }
+                        break;
+
+                    case CMPI_string:
+                        if (dta[i].value.string)
+                        {
+                            nDta[i].value.string =
+                                (dta[i].value.string)->ft->clone(
+                                    dta[i].value.string,
+                                    &rrc);
+                        }
+                        break;
                 }
                 if (rrc.rc)
                 {
@@ -172,6 +288,7 @@ extern "C"
                 }
             }
         }
+
         CMSetStatus(rc,CMPI_RC_OK);
         PEG_METHOD_EXIT();
         return nArray;
@@ -182,8 +299,15 @@ extern "C"
         CMPICount pos,
         CMPIStatus* rc)
     {
-        CMPIData *dta = (CMPIData*)eArray->hdl;
         CMPIData data = {0,CMPI_nullValue,{0}};
+        CMPI_Array *arr = (CMPI_Array*)eArray->hdl;
+        if (!arr)
+        {
+            CMSetStatus(rc, CMPI_RC_ERR_INVALID_HANDLE);
+            return data;
+        }
+
+        CMPIData *dta = (CMPIData*)arr->hdl;
         if (!dta)
         {
             CMSetStatus(rc, CMPI_RC_ERR_INVALID_HANDLE);
@@ -219,7 +343,14 @@ extern "C"
         PEG_METHOD_ENTER(
             TRC_CMPIPROVIDERINTERFACE,
             "CMPI_Array:arraySetElementAt()");
-        CMPIData *dta = (CMPIData*)eArray->hdl;
+        CMPI_Array *arr = (CMPI_Array*)eArray->hdl;
+        if (!arr)
+        {
+            PEG_METHOD_EXIT();
+            CMReturn(CMPI_RC_ERR_INVALID_HANDLE);
+        }
+
+        CMPIData *dta = (CMPIData*)arr->hdl;
         if (!dta)
         {
             PEG_METHOD_EXIT();
@@ -232,7 +363,13 @@ extern "C"
         }
         if (pos<dta->value.uint32)
         {
-            if ((dta->type&~CMPI_ARRAY)==type)
+            if (type == CMPI_null)
+            {
+                dta[pos+1].state=CMPI_nullValue;
+                PEG_METHOD_EXIT();
+                CMReturn(CMPI_RC_OK);
+            }
+            else if ((dta->type&~CMPI_ARRAY)==type)
             {
                 dta[pos+1].state=CMPI_goodValue;
                 if (type == CMPI_chars)
@@ -270,7 +407,13 @@ extern "C"
         const CMPIArray* eArray,
         CMPIStatus* rc)
     {
-        CMPIData *dta = (CMPIData*)eArray->hdl;
+        CMPI_Array *arr = (CMPI_Array*)eArray->hdl;
+        if (!arr)
+        {
+            CMSetStatus(rc, CMPI_RC_ERR_INVALID_HANDLE);
+            return 0;
+        }
+        CMPIData *dta = (CMPIData*)arr->hdl;
         if (!dta)
         {
             CMSetStatus(rc, CMPI_RC_ERR_INVALID_HANDLE);
@@ -284,7 +427,13 @@ extern "C"
         const CMPIArray* eArray,
         CMPIStatus* rc)
     {
-        CMPIData *dta = (CMPIData*)eArray->hdl;
+        CMPI_Array *arr = (CMPI_Array*)eArray->hdl;
+        if (!arr)
+        {
+            CMSetStatus(rc, CMPI_RC_ERR_INVALID_HANDLE);
+            return 0;
+        }
+        CMPIData *dta = (CMPIData*)arr->hdl;
         if (!dta)
         {
             CMSetStatus(rc, CMPI_RC_ERR_INVALID_HANDLE);
diff -up pegasus/src/Pegasus/ProviderManager2/CMPI/CMPI_Array.h.orig pegasus/src/Pegasus/ProviderManager2/CMPI/CMPI_Array.h
--- pegasus/src/Pegasus/ProviderManager2/CMPI/CMPI_Array.h.orig	2010-03-04 12:41:54.670047252 +0100
+++ pegasus/src/Pegasus/ProviderManager2/CMPI/CMPI_Array.h	2010-03-04 12:41:47.082995336 +0100
@@ -0,0 +1,52 @@
+//%LICENSE////////////////////////////////////////////////////////////////
+//
+// Licensed to The Open Group (TOG) under one or more contributor license
+// agreements.  Refer to the OpenPegasusNOTICE.txt file distributed with
+// this work for additional information regarding copyright ownership.
+// Each contributor licenses this file to you under the OpenPegasus Open
+// Source License; you may not use this file except in compliance with the
+// License.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the "Software"),
+// to deal in the Software without restriction, including without limitation
+// the rights to use, copy, modify, merge, publish, distribute, sublicense,
+// and/or sell copies of the Software, and to permit persons to whom the
+// Software is furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+//////////////////////////////////////////////////////////////////////////
+//
+//%/////////////////////////////////////////////////////////////////////////////
+
+#ifndef _CMPI_Array_H_
+#define _CMPI_Array_H_
+
+#include <Pegasus/Provider/CMPI/cmpift.h>
+
+PEGASUS_NAMESPACE_BEGIN
+
+struct CMPI_Array : CMPIArray
+{
+    CMPIBoolean isCloned;
+    CMPI_Array(CMPIData *data, CMPIBoolean isCloned_ = false)
+        : isCloned(isCloned_)
+    {
+        hdl = data;
+    }
+};
+
+PEGASUS_NAMESPACE_END
+
+#endif
+
diff -up pegasus/src/Pegasus/ProviderManager2/CMPI/CMPI_BrokerEnc.cpp.orig pegasus/src/Pegasus/ProviderManager2/CMPI/CMPI_BrokerEnc.cpp
--- pegasus/src/Pegasus/ProviderManager2/CMPI/CMPI_BrokerEnc.cpp.orig	2010-03-04 12:42:17.603994935 +0100
+++ pegasus/src/Pegasus/ProviderManager2/CMPI/CMPI_BrokerEnc.cpp	2010-03-04 12:43:17.228995399 +0100
@@ -36,6 +36,7 @@
 #include "CMPI_Ftabs.h"
 #include "CMPI_String.h"
 #include "CMPI_SelectExp.h"
+#include "CMPI_Array.h"
 #include "CMPIMsgHandleManager.h"
 
 #include <Pegasus/Common/CIMName.h>
@@ -421,8 +422,9 @@ extern "C"
             dta[i].state=CMPI_nullValue;
             dta[i].value.uint64=0;
         }
+        CMPI_Array *arr = new CMPI_Array(dta);
         CMPIArray* cmpiArray =
-            reinterpret_cast<CMPIArray*>(new CMPI_Object(dta));
+            reinterpret_cast<CMPIArray*>(new CMPI_Object(arr));
         PEG_METHOD_EXIT();
         return cmpiArray;
     }
diff -up pegasus/src/Pegasus/ProviderManager2/CMPI/CMPI_Error.cpp.orig pegasus/src/Pegasus/ProviderManager2/CMPI/CMPI_Error.cpp
--- pegasus/src/Pegasus/ProviderManager2/CMPI/CMPI_Error.cpp.orig	2010-03-04 12:43:32.417975752 +0100
+++ pegasus/src/Pegasus/ProviderManager2/CMPI/CMPI_Error.cpp	2010-03-04 12:46:17.327995000 +0100
@@ -493,9 +493,10 @@ extern "C"
             String s = pgRecommendedActions[i-1];
             dta[i].value.string=string2CMPIString(s);
         }
+        CMPI_Array *arr = new CMPI_Array(dta);
         CMSetStatus(rc,CMPI_RC_OK);
         PEG_METHOD_EXIT();
-        return reinterpret_cast<CMPIArray*>(new CMPI_Object(dta));
+        return reinterpret_cast<CMPIArray*>(new CMPI_Object(arr));
     }
 
     static CMPIString* errGetErrorSource(const CMPIError* eErr, CMPIStatus* rc)
@@ -746,7 +747,7 @@ extern "C"
         }
         CMSetStatus(rc,CMPI_RC_OK);
         CMPIArray* cmpiArray =
-            reinterpret_cast<CMPIArray*>(new CMPI_Object(dta));
+            reinterpret_cast<CMPIArray*>(new CMPI_Object(new CMPI_Array(dta)));
         PEG_METHOD_EXIT();
         return cmpiArray;
     }
@@ -857,8 +858,13 @@ extern "C"
         }
 
         Array<String> pgRecommendedActions;
-
-        CMPIData* dta=(CMPIData*)recommendedActions->hdl;
+        CMPI_Array* arr = (CMPI_Array*)recommendedActions->hdl;
+        if (!arr)
+        {
+            PEG_METHOD_EXIT();
+            CMReturn(CMPI_RC_ERR_INVALID_PARAMETER);
+        }
+        CMPIData* dta=(CMPIData*)arr->hdl;
         if (!dta)
         {
             PEG_METHOD_EXIT();
@@ -1064,8 +1070,13 @@ extern "C"
         }
 
         Array<String> pgMessageArguments;
-
-        CMPIData* dta=(CMPIData*)messageArguments->hdl;
+        CMPI_Array* arr = (CMPI_Array*)messageArguments->hdl;
+        if (!arr)
+        {
+            PEG_METHOD_EXIT();
+            CMReturn(CMPI_RC_ERR_INVALID_PARAMETER);
+        }
+        CMPIData* dta=(CMPIData*)arr->hdl;
         if (!dta)
         {
             PEG_METHOD_EXIT();
diff -up pegasus/src/Pegasus/ProviderManager2/CMPI/CMPI_Object.cpp.orig pegasus/src/Pegasus/ProviderManager2/CMPI/CMPI_Object.cpp
--- pegasus/src/Pegasus/ProviderManager2/CMPI/CMPI_Object.cpp.orig	2010-03-04 12:46:28.195975729 +0100
+++ pegasus/src/Pegasus/ProviderManager2/CMPI/CMPI_Object.cpp	2010-03-04 12:47:37.775994894 +0100
@@ -96,10 +96,10 @@ CMPI_Object::CMPI_Object(Array<CIMParamV
     ftab = CMPI_Args_Ftab;
 }
 
-CMPI_Object::CMPI_Object(CMPIData *dta)
+CMPI_Object::CMPI_Object(CMPI_Array *arr)
 {
     CMPI_ThreadContext::addObject(this);
-    hdl = (void*)dta;
+    hdl = (void*)arr;
     ftab = CMPI_Array_Ftab;
 }
 
diff -up pegasus/src/Pegasus/ProviderManager2/CMPI/CMPI_Object.h.orig pegasus/src/Pegasus/ProviderManager2/CMPI/CMPI_Object.h
--- pegasus/src/Pegasus/ProviderManager2/CMPI/CMPI_Object.h.orig	2010-03-04 12:47:43.410975742 +0100
+++ pegasus/src/Pegasus/ProviderManager2/CMPI/CMPI_Object.h	2010-03-04 12:48:24.504973816 +0100
@@ -45,6 +45,7 @@
 
 #include "CMPI_ThreadContext.h"
 #include "CMPI_Enumeration.h"
+#include "CMPI_Array.h"
 
 PEGASUS_NAMESPACE_BEGIN
 
@@ -72,7 +73,7 @@ public:
     CMPI_Object(const String&);
     CMPI_Object(const char*);
     CMPI_Object(Array<CIMParamValue>*);
-    CMPI_Object(CMPIData*);
+    CMPI_Object(CMPI_Array*);
     CMPI_Object(CMPI_Object*);
     CMPI_Object(CMPISelectCond*);
     CMPI_Object(CMPISubCond*);
diff -up pegasus/src/Pegasus/ProviderManager2/CMPI/CMPI_Value.cpp.orig pegasus/src/Pegasus/ProviderManager2/CMPI/CMPI_Value.cpp
--- pegasus/src/Pegasus/ProviderManager2/CMPI/CMPI_Value.cpp.orig	2010-03-04 12:48:32.957037557 +0100
+++ pegasus/src/Pegasus/ProviderManager2/CMPI/CMPI_Value.cpp	2010-03-04 12:49:17.187985133 +0100
@@ -140,7 +140,7 @@ CIMValue value2CIMValue(const CMPIValue*
         }
         // When data is not NULL and data->array is also set
         CMPIArray *ar=data->array;
-        CMPIData *aData=(CMPIData*)ar->hdl;
+        CMPIData *aData=(CMPIData*)((CMPI_Array*)ar->hdl)->hdl;
 
         //Get the type of the elements in the array
         CMPIType aType=aData->type&~CMPI_ARRAY;
@@ -533,7 +533,7 @@ CMPIrc value2CMPIData(const CIMValue& v,
                     return CMPI_RC_ERR_NOT_SUPPORTED;
             }
         data->value.array = reinterpret_cast<CMPIArray*>(
-        new CMPI_Object(aData-1));
+        new CMPI_Object(new CMPI_Array(aData-1)));
     }  // end of array porocessing
 
     //Start of non-array processing
diff -up pegasus/src/Providers/sample/CMPI/InstanceProvider/cmpiInstanceProvider.c.orig pegasus/src/Providers/sample/CMPI/InstanceProvider/cmpiInstanceProvider.c
--- pegasus/src/Providers/sample/CMPI/InstanceProvider/cmpiInstanceProvider.c.orig	2010-03-04 12:50:18.384975858 +0100
+++ pegasus/src/Providers/sample/CMPI/InstanceProvider/cmpiInstanceProvider.c	2010-03-04 12:51:04.311984323 +0100
@@ -381,6 +381,7 @@ CMPIStatus InstProvModifyInstance  (
                 }
             }
         }
+        CMRelease(inst);
         /*If match fails, throw exception, as instance to be mmodified is not
           found */
         if(!flag)
@@ -431,6 +432,11 @@ CMPIStatus InstProvDeleteInstance (
                 {
                     flag =1;
                     CMRelease(retInst.value.inst);
+                    CMSetArrayElementAt(
+                        clone_arr_ptr,
+                        j,
+                        &retInst.value.inst,
+                        CMPI_null);
                     valid[j] = 0;
                 }
             }
openSUSE Build Service is sponsored by