AH! I see the bug now!

array is of type OCRepPayload**!

The array[i] should REALLY be (*array)[i]; 

Thats why it looks like it is jumping around.  Good catch!  If you'd
like to submit a patch, I'm sure it wouldn't have a problem getting
accepted.

On Fri, 2015-09-11 at 16:05 +0000, Keane, Erich wrote:
> I'm not sure I'm getting what you mean?  Are you attempting to alter
> behavior, or did you find a bug?  If you found a bug, feel free to
> submit a patch and add Jon A. Cruz to the review.
> 
> As far as:
> array[i] -> *array+i,  I definitely prefer the previous, and I'm not
> sure how they would be different...
> 
> 
> 
> On Fri, 2015-09-11 at 13:11 +0000, ??? wrote:
> > Currently, Samsung implements   the sequence type of 
> > AttributeValue(OCRepPayload )   in C  like C++ 
> > I wrote   the sequence type of AttributeValue(OCRepPayload )  because C 
> > doesn't support vector. 
> > 
> > when I am using *.c from resoruce/csdk/stack/src  because  we cannot use 
> > OCpresentation.cpp for the thin project ,I have problem to exchaange 
> > "OCRepPayload array (OCRepPayload[] )"  as a value.
> > 
> > ie . the following format cannot be sent.
> > .   {  "key1" : {
> >                       { 
> >                          "nested key" : "key_01"
> >                           value"  : 100
> >                         }, 
> >                         {
> >                            "nested key" : "key_02"
> >                            "value"  : 200
> >                         } 
> >                    }
> >       }           
> > 
> > The based file i tested was   
> > resource/scdk/stack/smaples/linux/SimpleClientServer/ocserver.cpp, 
> > occlient.cpp.
> > Even though they are .cpp,  they call  c functions intread of c++ 
> > functions.. 
> > 
> > 
> > while testing and debuging this issue,  I found out that 
> > OCRepPayloadSetPropObjectArray of ocpayload.c  has a pointer issue
> > line 953 ;  increasing i  of  array[i]  in  OCRepPayloadClone(array[i])  
> > jumps too much  , so it cannot find the next  OCRepPayload  correct.
> > 
> > If   newArray[i] = OCRepPayloadClone(array[i]) is changed to  newArray[i] = 
> > OCRepPayloadClone((*array +i) )  ;,it seems  it works well as intended 
> > 
> > 
> > =============
> > 
> > typedef struct LIGHTRESOURCE
> > {
> >     OCResourceHandle handle;
> >     bool state;
> >     int power;
> >     char strArray[STRARRAYNUMBER][STRARRAYLENTH];           // array string
> >     int64_t  intArray[INTARRAYNUMBER];                              // 
> > array int
> >     OCRepPayload  rcsArray[2];
> > } LightResource;
> > 
> > -----------------
> > 
> > {
> > ......
> >        OCRepPayload dupobj[2];
> >         dimensions[0]=2; dimensions[1]=dimensions[2]=0;
> >         if(OCRepPayloadGetPropObjectArray(input, "rcsarray", (OCRepPayload 
> > ***)dupobj, dimensions))          {
> >             
> >              memcpy(currLightResource->rcsArray, dupobj, 
> > RCSTARRAYNUMBER*sizeof(OCRepPayload));
> >         }
> > 
> >     }
> >    // when I check   currLightResource->rcsArray,,  it has teh  correct 
> > value. 
> >     return getPayload(gResourceUri, currLightResource->power, 
> > currLightResource->state, 
> >     currLightResource->strArray, currLightResource->intArray, 
> > currLightResource->rcsArray);
> > }
> > 
> > 
> > 
> > OCRepPayload* getPayload(const char* uri, int64_t power, bool state, char 
> > strArray[][STRARRAYLENTH], 
> >     int64_t* intArray, OCRepPayload*  rcsArray)
> > {
> > ....
> >  size_t dimensions[MAX_REP_ARRAY_DEPTH]={2,0,0}; ;; just 2 times.
> > OCRepPayloadSetPropObjectArray(payload, "rcsarray",( const OCRepPayload**) 
> > &rcsArray, dimensions );  ///    
> > ....
> > }
> > 
> > 
> > Given that OCRepresentation.cpp doesn't use  OCRepPayloadSetPropObjectArray 
> >  and nobody uses OCRepPayload array (OCRepPayload[] ) yet, I think it is 
> > possble that it would rather be changed. however I am still believeing  my 
> > testing way may need to get fixed..  
> > 
> > 
> > If you don't mind . Can I submit ocpayload.c directly?  otherwise  please  
> > find out the better way or make me correct.. 
> > 
> > 
> > thank you
> > Rami 
> > _______________________________________________
> > iotivity-dev mailing list
> > iotivity-dev at lists.iotivity.org
> > https://lists.iotivity.org/mailman/listinfo/iotivity-dev
> 
> _______________________________________________
> iotivity-dev mailing list
> iotivity-dev at lists.iotivity.org
> https://lists.iotivity.org/mailman/listinfo/iotivity-dev

Reply via email to