Mercurial > jhg
comparison src/org/tmatesoft/hg/internal/RevlogStream.java @ 440:299870249a28
Issue 30: bogus IOException for mmap file on linux
| author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
|---|---|
| date | Thu, 19 Apr 2012 19:18:25 +0200 |
| parents | 48f993aa2f41 |
| children | 1ee452f31187 |
comparison
equal
deleted
inserted
replaced
| 439:2bf6f917a7e5 | 440:299870249a28 |
|---|---|
| 117 int recordOffset = getIndexOffsetInt(revisionIndex); | 117 int recordOffset = getIndexOffsetInt(revisionIndex); |
| 118 daIndex.seek(recordOffset + 12); // 6+2+4 | 118 daIndex.seek(recordOffset + 12); // 6+2+4 |
| 119 int actualLen = daIndex.readInt(); | 119 int actualLen = daIndex.readInt(); |
| 120 return actualLen; | 120 return actualLen; |
| 121 } catch (IOException ex) { | 121 } catch (IOException ex) { |
| 122 throw new HgInvalidControlFileException(null, ex, indexFile); | 122 throw new HgInvalidControlFileException(null, ex, indexFile).setRevisionIndex(revisionIndex); |
| 123 } finally { | 123 } finally { |
| 124 daIndex.done(); | 124 daIndex.done(); |
| 125 } | 125 } |
| 126 } | 126 } |
| 127 | 127 |
| 139 daIndex.seek(recordOffset + 32); | 139 daIndex.seek(recordOffset + 32); |
| 140 byte[] rv = new byte[20]; | 140 byte[] rv = new byte[20]; |
| 141 daIndex.readBytes(rv, 0, 20); | 141 daIndex.readBytes(rv, 0, 20); |
| 142 return rv; | 142 return rv; |
| 143 } catch (IOException ex) { | 143 } catch (IOException ex) { |
| 144 throw new HgInvalidControlFileException(null, ex, indexFile); | 144 throw new HgInvalidControlFileException("Revision lookup failed", ex, indexFile).setRevisionIndex(revisionIndex); |
| 145 } finally { | 145 } finally { |
| 146 daIndex.done(); | 146 daIndex.done(); |
| 147 } | 147 } |
| 148 } | 148 } |
| 149 | 149 |
| 160 int recordOffset = getIndexOffsetInt(revisionIndex); | 160 int recordOffset = getIndexOffsetInt(revisionIndex); |
| 161 daIndex.seek(recordOffset + 20); | 161 daIndex.seek(recordOffset + 20); |
| 162 int linkRev = daIndex.readInt(); | 162 int linkRev = daIndex.readInt(); |
| 163 return linkRev; | 163 return linkRev; |
| 164 } catch (IOException ex) { | 164 } catch (IOException ex) { |
| 165 throw new HgInvalidControlFileException(null, ex, indexFile); | 165 throw new HgInvalidControlFileException("Linked revision lookup failed", ex, indexFile).setRevisionIndex(revisionIndex); |
| 166 } finally { | 166 } finally { |
| 167 daIndex.done(); | 167 daIndex.done(); |
| 168 } | 168 } |
| 169 } | 169 } |
| 170 | 170 |
| 191 return i; | 191 return i; |
| 192 } | 192 } |
| 193 daIndex.skip(inline ? 12 + compressedLen : 12); | 193 daIndex.skip(inline ? 12 + compressedLen : 12); |
| 194 } | 194 } |
| 195 } catch (IOException ex) { | 195 } catch (IOException ex) { |
| 196 throw new HgInvalidControlFileException("Failed", ex, indexFile).setRevision(nodeid); | 196 throw new HgInvalidControlFileException("Revision lookup failed", ex, indexFile).setRevision(nodeid); |
| 197 } finally { | 197 } finally { |
| 198 daIndex.done(); | 198 daIndex.done(); |
| 199 } | 199 } |
| 200 return BAD_REVISION; | 200 return BAD_REVISION; |
| 201 } | 201 } |
