Overview
Comment: | minReader fixes |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
4195e7817d231f49c3713953023f0a0a |
User & Date: | spaskalev on 2014-12-23 14:27:35 |
Other Links: | manifest | tags |
Context
2014-12-23
| ||
18:39 | Additional fixes and code simplification for MinReader check-in: 70896f73e9 user: spaskalev tags: trunk | |
14:27 | minReader fixes check-in: 4195e7817d user: spaskalev tags: trunk | |
10:38 | Added MinReader to ioutils, CC at 100% check-in: 47b221d5b4 user: spaskalev tags: trunk | |
Changes
Modified src/0dev.org/ioutil/ioutil.go from [edab0c9e76] to [4d4fd7d642].
︙ | ︙ | |||
27 28 29 30 31 32 33 | var buffer []byte = make([]byte, 0, size) return ReaderFunc(func(output []byte) (readCount int, e error) { var ( bufferLength int = len(buffer) err error ) | < | < < | > > | > > > > | 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | var buffer []byte = make([]byte, 0, size) return ReaderFunc(func(output []byte) (readCount int, e error) { var ( bufferLength int = len(buffer) err error ) start: // Reply with the buffered data if there is any if bufferLength > 0 { readCount = copy(output, buffer) if readCount < bufferLength { // Advance the data in the buffer buffer = buffer[:copy(buffer, buffer[readCount:])] } else { // Clear the buffer buffer = buffer[:0] } // Stage any error for returning e, err = err, nil return readCount, e } // Delegate if the buffer is empty and the destination buffer is large enough if len(output) >= size { return reader.Read(output[:len(output)/size]) } // Extend the buffer up to the desired size and perform a Read buffer = buffer[:size] readCount, err = reader.Read(buffer) // Size the buffer down to the read data size and restart buffer = buffer[:readCount] bufferLength = len(buffer) if bufferLength > 0 { goto start } // Stage any error for returning e, err = err, nil return 0, e }) } |
Modified src/0dev.org/predictor/predictor_test.go from [0dde784b22] to [d9c16d84c9].
︙ | ︙ | |||
136 137 138 139 140 141 142 | // Diff the result against the initial input delta := diff.Diff(diff.D{len(input), len(decompressed), func(i, j int) bool { return input[i] == decompressed[j] }}) // Return a well-formated error if any differences are found if len(delta.Added) > 0 || len(delta.Removed) > 0 { | | | 136 137 138 139 140 141 142 143 144 145 146 147 148 149 | // Diff the result against the initial input delta := diff.Diff(diff.D{len(input), len(decompressed), func(i, j int) bool { return input[i] == decompressed[j] }}) // Return a well-formated error if any differences are found if len(delta.Added) > 0 || len(delta.Removed) > 0 { return fmt.Errorf("Unexpected decompressed output %v\ninput: (%d) %#x\ntrace: (%d) %#x\noutput: (%d) %#x\n", delta, len(input), input, len(trace), trace, len(decompressed), decompressed) } // All is good :) return nil } |