From: Wolfgang M. M. <wol...@us...> - 2004-08-12 08:07:18
|
Update of /cvsroot/exist/eXist-1.0/src/org/exist/storage/store In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv19879/src/org/exist/storage/store Modified Files: BFile.java Log Message: Fixed initialization error with page offset table in BFile.SinglePage. Index: BFile.java =================================================================== RCS file: /cvsroot/exist/eXist-1.0/src/org/exist/storage/store/BFile.java,v retrieving revision 1.30 retrieving revision 1.31 diff -C2 -d -r1.30 -r1.31 *** BFile.java 11 Aug 2004 12:47:01 -0000 1.30 --- BFile.java 12 Aug 2004 08:07:09 -0000 1.31 *************** *** 1794,1798 **** ph.setDirty(true); ph.setDataLength(0); - ph.setTID((short) -1); //ph.setNextChunk( -1 ); fileHeader.setLastDataPage(page.getPageNum()); --- 1794,1797 ---- *************** *** 1833,1836 **** --- 1832,1836 ---- private void readOffsets() throws IOException { + Arrays.fill(offsets, (short)-1); final int dlen = ph.getDataLength(); for(short pos = 0; pos < dlen; ) { *************** *** 1843,1858 **** public short getNextTID() { for(short i = 0; i < offsets.length; i++) { ! if(offsets[i] == -1) return i; } short tid = (short)offsets.length; ! ph.nextTID = (short)(ph.nextTID * 2); ! short[] t = new short[ph.nextTID]; Arrays.fill(t, (short)-1); System.arraycopy(offsets, 0, t, 0, offsets.length); offsets = t; return tid; } public void setOffset(short tid, int offset) { offsets[tid] = (short)offset; --- 1843,1871 ---- public short getNextTID() { for(short i = 0; i < offsets.length; i++) { ! if(offsets[i] == -1) { return i; + } } short tid = (short)offsets.length; ! short next = (short)(ph.nextTID * 2); ! if(next < 0 || next < ph.nextTID) { ! return -1; ! } ! short[] t = new short[next]; Arrays.fill(t, (short)-1); System.arraycopy(offsets, 0, t, 0, offsets.length); offsets = t; + ph.nextTID = next; return tid; } + private String printContents() { + StringBuffer buf = new StringBuffer(); + for(short i = 0; i < offsets.length; i++) { + buf.append('[').append(i).append(", ").append(offsets[i]).append(']'); + } + return buf.toString(); + } + public void setOffset(short tid, int offset) { offsets[tid] = (short)offset; |