When you need a writable descriptor like TDes8 to pass as reference into a function ( like FillMyDes(TDes8& aDes) ), and later this function will fill it with data, you probably want to allocate this descriptor in Symbian heap. So you are writing this code:
HBufC8* iHeapDes = HBufC8::NewL(KSIZE);
And then you want to store writable descriptor for later use like this:
iWriteDes = iHeapDes->Des();
But iWriteDes don’t becomes what you really wanted. Because you make mistake in previous line of code, you haven’t assigned descriptor, you just trieв to copy the data contained in heap descriptor to you writable descriptor. The right code will look like this:
iWriteDes.Set( iHeapDes->Des() );
Now you got correct writable descriptor in iWriteDes.