XP3アーカイブでファイル終端を超えて読むような時に対処
@@ -258,8 +258,10 @@ | ||
258 | 258 | while( read_size > 0 ) { |
259 | 259 | while( mSegmentRemain == 0 ) { |
260 | 260 | // must go next segment |
261 | - if(!openNextSegment()) // open next segment | |
262 | - return write_size; // could not read more | |
261 | + if(!openNextSegment()) {// open next segment | |
262 | + if( write_size == 0 ) return -1; | |
263 | + else return write_size; // could not read more | |
264 | + } | |
263 | 265 | } |
264 | 266 | |
265 | 267 | int one_size = (int) (read_size > mSegmentRemain ? mSegmentRemain : read_size); |
@@ -297,8 +299,10 @@ | ||
297 | 299 | while( read_size > 0 ) { |
298 | 300 | while( mSegmentRemain == 0 ) { |
299 | 301 | // must go next segment |
300 | - if(!openNextSegment()) // open next segment | |
301 | - return write_size; // could not read more | |
302 | + if(!openNextSegment()) { // open next segment | |
303 | + if( write_size == 0 ) return -1; | |
304 | + else return write_size; // could not read more | |
305 | + } | |
302 | 306 | } |
303 | 307 | |
304 | 308 | int one_size = (int) (read_size > mSegmentRemain ? mSegmentRemain : read_size); |
@@ -334,8 +338,10 @@ | ||
334 | 338 | while( read_size > 0 ) { |
335 | 339 | while( mSegmentRemain == 0 ) { |
336 | 340 | // must go next segment |
337 | - if(!openNextSegment()) // open next segment | |
338 | - return write_size; // could not read more | |
341 | + if(!openNextSegment()) { // open next segment | |
342 | + if( write_size == 0 ) return -1; // end of file | |
343 | + else return write_size; // could not read more | |
344 | + } | |
339 | 345 | } |
340 | 346 | |
341 | 347 | int one_size = (int) (read_size > mSegmentRemain ? mSegmentRemain : read_size); |