|
@ -300,7 +300,10 @@ int32_t OpticalModuleV2::a8000_optical_read_raw(int32_t index, uint8_t* data, in |
|
|
if (sector_size > *len) return err::kbuffer_not_enough; |
|
|
if (sector_size > *len) return err::kbuffer_not_enough; |
|
|
uint16_t add = index * sector_size; |
|
|
uint16_t add = index * sector_size; |
|
|
|
|
|
|
|
|
if (add >= rawsize) return err::kparam_out_of_range; |
|
|
|
|
|
|
|
|
if (add >= rawsize) { |
|
|
|
|
|
*len = 0; |
|
|
|
|
|
return 0; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
if (add + sector_size > rawsize) { // rawsize 127 sector_size 128 add = 0
|
|
|
if (add + sector_size > rawsize) { // rawsize 127 sector_size 128 add = 0
|
|
|
*len = rawsize - add; |
|
|
*len = rawsize - add; |
|
|