equal
deleted
inserted
replaced
298 void *real_value_p = NULL; |
298 void *real_value_p = NULL; |
299 char flags = 0; |
299 char flags = 0; |
300 void *visible_value_p = UnpackVar(dsc, &real_value_p, &flags); |
300 void *visible_value_p = UnpackVar(dsc, &real_value_p, &flags); |
301 void *dst_p = &rbuf[dsc->buf_index]; |
301 void *dst_p = &rbuf[dsc->buf_index]; |
302 uint32_t sz = __get_type_enum_size(dsc->type); |
302 uint32_t sz = __get_type_enum_size(dsc->type); |
303 #warning TODO: size of string in recv |
303 |
|
304 if(__Is_a_string(dsc)){ |
|
305 sz = ((STRING*)valptr)->len + 1; |
|
306 } |
304 |
307 |
305 if((valptr + sz) <= end) |
308 if((valptr + sz) <= end) |
306 { |
309 { |
307 // rescheduling spinlock until free |
310 // rescheduling spinlock until free |
308 while(AtomicCompareExchange(&dsc->rlock, 0, 1)) sched_yield(); |
311 while(AtomicCompareExchange(&dsc->rlock, 0, 1)) sched_yield(); |