KVPB_DPTRTYPE kvpb_key_t *des,*src;
p=kvpb_region_base(kvpb_block,0);
- src=(KVPB_DPTRTYPE kvpb_key_t*)kvpb_region_base(kvpb_block,1);
des=(KVPB_DPTRTYPE kvpb_key_t*)p;
+ if(kvpb_block->flags&KVPB_DESC_DOUBLE)
+ src=(KVPB_DPTRTYPE kvpb_key_t*)kvpb_region_base(kvpb_block,1);
+ else
+ src=(KVPB_DPTRTYPE kvpb_key_t*)p;
+
if((!mode && (kvpb_block->flags & KVPB_DESC_USE2ND))||(mode==2)) {
if(!(kvpb_block->flags&KVPB_DESC_DOUBLE))
return -1;
while(src) {
int s=kvpb_chunk_align(kvpb_block,src->size+sizeof(kvpb_key_t));
if((*kvpb_keyid_valid(kvpb_block,src)!=KVPB_KEYID_INVALID) && (src->keyid!=keyid)) {
- kvpb_block_copy(kvpb_block,des,src,s);
+ if(src!=des)
+ kvpb_block_copy(kvpb_block,des,src,s);
if (kvpb_block->flags&KVPB_DESC_CHUNKWO) s+=kvpb_chunk_size(kvpb_block);
des=(KVPB_DPTRTYPE kvpb_key_t*)((uint8_t*)des+s);
}