Иногда работает следующий код, что, вероятно, означает хорошую концепцию, но плохое исполнение.Так как это зависает в зависимости от того, где упали биты, это означает, что я делаю шаг вперед.Я заинтересован в поиске элегантного способа заполнения bufferdata
<= 4096 байт из <code>buffer, но по общему признанию, это не так.
РЕДАКТИРОВАТЬ: ошибка, которую я получаю, является неправильным доступом к буферным данным
unsigned char buffer[4096] = {0};
char *bufferdata;
bufferdata = (char*)malloc(4096 * sizeof(*bufferdata));
if (! bufferdata)
return false;
while( ... )
{
// int nextBlock( voidp _buffer, unsigned _length );
read=nextBlock( buffer, 4096);
if( read > 0 )
{
memcpy(bufferdata+bufferdatawrite,buffer,read);
if(read == 4096) {
// let's go for another chunk
bufferdata = (char*)realloc(bufferdata, ( bufferdatawrite + ( 4096 * sizeof(*bufferdata)) ) );
if (! bufferdata) {
printf("failed to realloc\n");
return false;
}
}
}
else if( read<0 )
{
printf("error.\n");
break;
}
else {
printf("done.\n");
break;
}
}
free(bufferdata);